当前位置: 首页 > news >正文

NumPy 与 Pandas 数据操作对比:从高效计算到灵活分析的转变

NumPy 与 Pandas 数据操作对比:从高效计算到灵活分析的转变

本文探讨了 Python 中两个强大的数据处理库——NumPy 与 Pandas,在数据操作上的关键区别和联系。NumPy 专注于高效的数值计算,特别适合多维数组和向量化运算,而 Pandas 基于 NumPy 进行了扩展,特别擅长处理结构化和半结构化数据,提供了更高层次的数据操作接口,如 DataFrame,使得数据分析、清理和操作更加简洁直观。文章从数据存储、运算性能、兼容性和功能扩展等角度,深入对比了两者的特点和适用场景,为读者提供了选择合适工具的指南。

文章目录

  • NumPy 与 Pandas 数据操作对比:从高效计算到灵活分析的转变
      • 一 Python 原生 List 和 Dictionary
      • 二 NumPy Array
      • 三 Pandas DataFrame
      • 四 Pandas 与 NumPy 的关系
        • 1 数据存储
        • 2 数值计算
        • 3 性能优化
        • 4 兼容性
      • 五 总结
      • 六 完整代码示例
      • 七 源码地址

一 Python 原生 List 和 Dictionary

    # 示例代码a_list = [1, 2, 3]a_dict = {"a": 1, "b": 2, "c": 3}print("list:", a_list)print("dict:", a_dict)

Python 提供了原生的数据结构 ListDictionary,它们分别用于存储有序和键值对数据。然而,当处理大规模、多维数据时,原生数据结构可能不够高效。

二 NumPy Array

    # 示例代码import numpy as npa_array = np.array([[1, 2],[3, 4]])print("NumPy array:\n", a_array)

NumPy 提供了多维数组对象 ndarray,特别适合进行数值计算,能够高效地执行向量化操作,大大提高了数据处理的速度。

三 Pandas DataFrame

    # 示例代码import pandas as pda_df = pd.DataFrame({"a": [1, 3],"b": [2, 4]})print("Pandas DataFrame:\n", a_df)

Pandas 是基于 NumPy 的高级数据分析库,主要用于处理结构化和半结构化数据。DataFrame 是 Pandas 提供的二维表格数据结构,带有行和列标签,使数据操作更加直观和灵活。

四 Pandas 与 NumPy 的关系

Pandas 的底层很多功能是基于 NumPy 构建的,可以被视为对 NumPy 的扩展。Pandas 提供了对数据操作的更高级别抽象,尤其是在处理表格和时间序列数据时。以下是 Pandas 基于 NumPy 的几个关键点:

1 数据存储
  • Pandas 的 SeriesDataFrame 是对 NumPy ndarray 的高级封装。例如,Series 是带有索引的一维数组,而 DataFrame 是二维数组加上行、列标签。
2 数值计算
  • Pandas 在进行数值运算时依赖 NumPy 的高效计算库,很多数据操作都是通过 NumPy 来完成的。
3 性能优化
  • 由于 Pandas 使用了 NumPy,处理大规模数据时可以继承 NumPy 的高效性,特别是在数值型数据的操作上。
4 兼容性
  • Pandas 和 NumPy 在函数和对象上有很高的兼容性,Pandas 对象和 NumPy 数组可以方便地相互转换,很多 NumPy 的函数也可以直接用于 Pandas 对象。

虽然 Pandas 基于 NumPy 构建,但它在以下方面进行了重要扩展:数据操作的便捷性、对混合数据类型的支持、对时间序列的处理以及缺失值的管理。这些功能使得 Pandas 成为数据分析的主流工具。

五 总结

Pandas 可以看作是 NumPy 的功能扩展,适合处理结构化数据,尤其在数据分析和数据清理场景中有着广泛应用。NumPy 则更注重多维数组的高效计算,是科学计算的重要工具。

六 完整代码示例

# This is a sample Python script.# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
import pandas as pd
import numpy as npdef print_hi(name):# Use a breakpoint in the code line below to debug your script.print(f'Hi, {name}')  # Press ⌘F8 to toggle the breakpoint.# python、numpy 和 pandas 对比# List 和 Dictionarya_list = [1, 2, 3]a_dict = {"a": 1, "b": 2, "c": 3}print("list:", a_list)print("dict:", a_dict)# numpy arraya_array = np.array([[1, 2],[3, 4]])# pandas DataFramea_df = pd.DataFrame({"a": [1, 3],"b": [2, 4]})print("numpy array:\n", a_array)print("\npandas df:\n", a_df)# Pandas 是 Numpy 的封装库,继承了 Numpy 的很多优良传统,也具备丰富的功能组件.# Press the green button in the gutter to run the script.
if __name__ == '__main__':print_hi('Pandas 和 Numpy 的差别')# See PyCharm help at https://www.jetbrains.com/help/pycharm/

复制粘贴并覆盖到你的 main.py 中运行,运行结果如下。

Hi, Pandas 和 Numpy 的差别
list: [1, 2, 3]
dict: {'a': 1, 'b': 2, 'c': 3}
numpy array:[[1 2][3 4]]pandas df:a  b
0  1  2
1  3  4

七 源码地址

代码地址:

国内看 Gitee 之 pandas/Pandas 和 Numpy 的差别.py

国外看 GitHub 之 pandas/Pandas 和 Numpy 的差别.py

引用 莫烦 Python


http://www.mrgr.cn/news/57512.html

相关文章:

  • Stable Diffusion视频插件Ebsynth Utility使用方法
  • 认识ldconfig,不仅仅可以用于查看库的版本
  • 【 thinkphp8 】00006 启动 内、外置服务器
  • Java岗临近面试,如何短期突击通过?
  • 酒茶香连锁大平台周浦店签约仪式成功举办,携手并进共创辉煌
  • JAVA开源项目 房屋租赁系统 计算机毕业设计
  • 基于大模型的Milvus向量数据库的背景与实战应用,计算与索引机制,Python代码实现
  • 如何在浏览器中打开预览pdf,而不是下载
  • 基于neo4j的疫情信息管理系统
  • C# 委托简述
  • 基于SSM健身国际俱乐部系统的设计
  • 好的代码——个人观点
  • 2024怎么保护企业办公文件?10款企业常用的文件加密软件排行榜!
  • docker部署SQL审核平台Archery
  • 【Python学习】Python基础,对于库和框架的讲解(优点缺点)小白必备的!!!
  • 邦芒干货:职场中这三种人值得深交
  • 手持无人机飞手执照,会组装调试入伍当兵有多香!
  • 发现创新的力量:我们的网址专利检索平台
  • 文心一言 VS 讯飞星火 VS chatgpt (376)-- 算法导论24.4 8题
  • Leetcode3. 无重复字符的最长子串
  • 【网络协议栈】Tcp协议(下)的可靠性和高效性(超时重传、快速重传、拥塞控制、流量控制)
  • Spring Boot植物健康系统:智能农业的春天
  • LogicFlow自定义业务节点
  • LCR 159.库存管理
  • 基于51单片机的电子时钟整点报时proteus仿真
  • git合并代码时产生冲突,如何解决代码冲突