首页 > 其他分享 >【8.0】Pandas和NumPy的比较

【8.0】Pandas和NumPy的比较

时间:2023-09-24 16:55:44浏览次数:42  
标签:8.0 arr NumPy DataFrame 数组 print True Pandas

【一】引入

  • 我们知道 Pandas 是在 NumPy 的基础构建而来
  • 因此,熟悉 NumPy 可以更加有效的帮助我们使用 Pandas。
  • NumPy 主要用 C语言编写
  • 因此,在计算还和处理一维或多维数组方面,它要比 Python 数组快得多。
  • 关于 NumPy 的学习,可以参考《Python NumPy教程》

【二】创建数组

  • 数组的主要作用是在一个变量中存储多个值。
  • NumPy 可以轻松地处理多维数组,示例如下:
import numpy as np

arr = np.array([2, 4, 6, 8, 10, 12])
print(type(arr))
print("打印新建数组: ", end="")
# 使用for循环读取数据
for l in range(0, 5):
    print(arr[l], end=" ")
<class 'numpy.ndarray'>
打印新建数组: 2 4 6 8 10 
  • 虽然 Python 本身没有数组这个说法,不过 Python 提供一个 array 模块,用于创建数字、字符类型的数组,它能够容纳字符型、整型、浮点型等基本类型。示例如下:
import array

# 注意此处的 'l' 表示有符号int类型
arr = array.array('l', [2, 4, 6, 8, 10, 12])
print(type(arr))
print("新建数组: ", end="")
for i in range(0, 5):
    print(arr[i], end=" ")
<class 'array.array'>
新建数组: 2 4 6 8 10 

【三】布尔索引

  • 布尔索引是 NumPy 的重要特性之一,通常与 Pandas 一起使用。
  • 它的主要作用是过滤 DataFrame 中的数据,比如布尔值的掩码操作。
  • 下面示例展示了如何使用布尔索引访问 DataFrame 中的数据。

【1】创建一组包含布尔索引的数据

  • 首先创建一组包含布尔索引的数据,如下所示:
import pandas as pd

dict = {'name': ["Smith", "William", "Phill", "Parker"],
        'age': ["28", "39", "34", "36"]}
info = pd.DataFrame(dict, index=[True, True, False, True])
print(info)
          name age
True     Smith  28
True   William  39
False    Phill  34
True    Parker  36

【2】使用.loc访问索引为 True 的数据

  • 然后使用.loc访问索引为 True 的数据。
import pandas as pd

dict = {'name': ["Smith", "William", "Phill", "Parker"],
        'age': ["28", "39", "34", "36"]}
info = pd.DataFrame(dict, index=[True, True, False, True])
# 返回所有为 True的数据
print(info.loc[True])
         name age
True    Smith  28
True  William  39
True   Parker  36

【四】重塑数组形状

  • 在不改变数组数据的情况下,对数组进行变形操作,即改变数组的维度,比如 23(两行三列)的二维数组变维 32(三行两列)的二维数组。
  • 变形操作可以通过 reshape() 函数实现。
  • 示例如下:
import numpy as np

arr = np.arange(16)
print("原数组: \n", arr)
arr = np.arange(16).reshape(2, 8)
print("\n变形后数组:\n", arr)
arr = np.arange(16).reshape(8, 2)
print("\n变形后数组:\n", arr)
原数组: 
 [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15]

变形后数组:
 [[ 0  1  2  3  4  5  6  7]
 [ 8  9 10 11 12 13 14 15]]

变形后数组:
 [[ 0  1]
 [ 2  3]
 [ 4  5]
 [ 6  7]
 [ 8  9]
 [10 11]
 [12 13]
 [14 15]]

【五】Pdans与NumPy区别

  • Pandas 和 NumPy 被认为是科学计算与机器学习中必不可少的库,因为它们具有直观的语法和高性能的矩阵计算能力。
  • 下面对 Pandas 与 NumPy 进行简单的总结,如下表所示:
比较项 Pandas NumPy
适应性 Pandas主要用来处理类表格数据。 NumPy 主要用来处理数值数据。
工具 Pandas提供了Series和DataFrame数据结构。 NumPy 构建了 ndarray array来容纳数据。
性能 Pandas对于处理50万行以上的数据更具优势。 NumPy 则对于50万以下或者更少的数据,性能更佳。
内存利用率 与 NumPy相比,Pandas会消耗大量的内存。 NumPy 会消耗较少的内存。
对象 Pandas 提供了 DataFrame 2D数据表对象。 NumPy 则提供了一个多维数组 ndarray 对象

【六】转换ndarray数组

  • 在某些情况下,需要执行一些 NumPy 数值计算的高级函数,这个时候您可以使用 to_numpy() 函数,将 DataFrame 对象转换为 NumPy ndarray 数组,并将其返回。函数的语法格式如下:
DataFrame.to_numpy(dtype=None, copy=False)
  • 参数说明如下:

    • dtype:可选参数,表示数据类型;
    • copy:布尔值参数,默认值为 Fales,表示返回值不是其他数组的视图。
  • 下面使用示例,了解该函数的使用方法。

【1】示例 1

import pandas as pd

info = pd.DataFrame({"P": [2, 3], "Q": [4.0, 5.8]})
# 给info添加R列
info['R'] = pd.date_range('2020-12-23', periods=2)
print(info)
# 将其转化为numpy数组
n = info.to_numpy()
print(n)
# 可以通过 type 查看其类型
print(type(n))
   P    Q          R
0  2  4.0 2020-12-23
1  3  5.8 2020-12-24
[[2 4.0 Timestamp('2020-12-23 00:00:00')]
 [3 5.8 Timestamp('2020-12-24 00:00:00')]]
<class 'numpy.ndarray'>

【2】示例 2

import pandas as pd

# 创建DataFrame对象
info = pd.DataFrame([[17, 62, 35], [25, 36, 54], [42, 20, 15], [48, 62, 76]],
                    columns=['x', 'y', 'z'])
print('DataFrame\n----------\n', info)
# 转换DataFrame为数组array
arr = info.to_numpy()
print('\nNumpy Array\n----------\n', arr)
DataFrame
----------
     x   y   z
0  17  62  35
1  25  36  54
2  42  20  15
3  48  62  76

Numpy Array
----------
 [[17 62 35]
 [25 36 54]
 [42 20 15]
 [48 62 76]]

标签:8.0,arr,NumPy,DataFrame,数组,print,True,Pandas
From: https://www.cnblogs.com/dream-ze/p/17726185.html

相关文章

  • BootstrapBlazor组件库,NET8.0使用教程
    BootstrapBlazor组件库,NET8.0使用教程BootstrapBlazor组件库官网https://www.blazor.zone/componentsBootstrapBlazor组件库github仓库地址https://github.com/dotnetcore/BootstrapBlazorBootstrapBlazor组件库gitee仓库地址https://gitee.com/LongbowEnterprise/Bootstrap......
  • python的pandas库:合并数据
    在Pandas中,如果你有两个数据框(DataFrames),且它们的列数和列名都相同,你可以使用concat或merge函数将它们合并。以下是具体步骤:首先,导入Pandas库:importpandasaspd创建两个列数和列名都相同的数据框:df1=pd.DataFrame({'A':['A0','A1','A2','A3'],'B':[�......
  • VMware vSphere 8.0 Update 2 正式版发布 - 企业级工作负载平台
    VMwarevSphere8.0Update2正式版发布-企业级工作负载平台2023-09-21,北京时间22日凌晨vSphere8.0Update2正式发布。ESXi8.0U2&vCenterServer8.0U2请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u2/,查看最新版。原创作品,转载请保留出处。作者主页......
  • VMware ESXi 8.0U2 发布 - 领先的裸机 Hypervisor
    VMwareESXi8.0U2发布-领先的裸机Hypervisor2023-09-21,北京时间22日凌晨vSphere8.0Update2正式发布。同步发布Dell和HPE等OEM定制版镜像请访问原文链接:https://sysin.org/blog/vmware-esxi-8-u2/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgvS......
  • VMware vCenter Server 8.0U2 发布 - 集中式管理 vSphere 环境
    VMwarevCenterServer8.0U2发布-集中式管理vSphere环境2023-09-21,北京时间22日凌晨vSphere8.0Update2正式发布。请访问原文链接:https://sysin.org/blog/vmware-vcenter-8-u2/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgvSphere8.0U2新增功能,请......
  • 已解决TypeError: type numpy.ndarray doesn‘t define __round__ method
    已解决TypeError:typenumpy.ndarraydoesn’tdefineroundmethod文章目录报错问题解决方法声明报错问题之前在工作中遇到过这个坑,记录一下问题以及解决方法,不一定针对所有情况都能用,但是可以供大家参考。问题描述如下:TypeError:typenumpy.ndarraydoesn’tdefineroundm......
  • 已解决AttributeError: module ‘numpy‘ has no attribute ‘integer‘
    已解决AttributeError:module‘numpy‘hasnoattribute‘integer‘文章目录报错问题解决方法声明报错问题之前在工作中遇到过这个坑,记录一下问题以及解决方法,不一定针对所有情况都能用,但是可以供大家参考。问题描述如下:AttributeError:module‘numpy‘hasnoattribute......
  • 已解决pandas无法读取中文文件的问题
    已解决pandas无法读取中文文件的问题文章目录报错问题解决方法声明报错问题之前在工作中遇到过这个坑,记录一下问题以及解决方法,不一定针对所有情况都能用,但是可以供大家参考。问题描述如下:pandas无法读取中文文件的问题文件有问题或者环境编码有问题!解决方法data=open(r'dataset......
  • Python中numpy出现has no attribute '_no_nep50_warning'错误怎么办?
      本文介绍在Python中,numpy库出现报错module'numpy'hasnoattribute'_no_nep50_warning'的解决方法。  一次,在运行一个Python代码时,发现出现报错module'numpy'hasnoattribute'_no_nep50_warning',如下图所示。  其中,这一代码本来在Windows平台下运行是没有问题的,......
  • Pycharm 机器学习 pandas应用
    ......