Python - Pandas 相对于 Numpy/Scipy 的主要改进是什么

标签 python numpy pandas scipy data-analysis

我一直在用numpy/scipy做数据分析。我最近开始学习 Pandas 。

我已经学习了一些教程,我试图了解 Pandas 相对于 Numpy/Scipy 的主要改进是什么。

在我看来,Pandas 的关键思想是将不同的 numpy 数组包装在一个数据框中,并围绕它使用一些实用函数。

Pandas 有什么革命性的东西我只是愚蠢地错过了吗?

最佳答案

Pandas 并不是特别革命性,它确实使用 NumPy 和 SciPy 生态系统以及一些关键的 Cython 代码来实现它的目标。它可以被视为功能的更简单 API,添加了关键实用程序(如连接)和更简单的分组功能,这些功能对于使用类似表的数据或时间序列的人特别有用。但是,虽然不是革命性的,但 Pandas 确实具有关键优势。

有一段时间,我还认为 Pandas 只是 NumPy 之上的实用程序,供那些喜欢 DataFrame 界面的人使用。但是,我现在认为 Pandas 提供了这些关键功能(这并不全面):

  1. 结构数组(不同类型的独立存储,而不是 NumPy 中结构化数组的连续存储)--- 在许多情况下这将允许更快的处理。
  2. 常见操作(文件加载、绘图、选择和连接/对齐数据)的界面更简单,可以用很少的代码轻松完成大量工作。
  3. 索引数组,这意味着操作总是对齐,而不必自己跟踪对齐。
  4. Split-Apply-Combine 是一种思考和实现数据处理的强大方法

但是,Pandas 也有缺点:

  1. Pandas 基本上是一个用户界面库,并不特别适合编写库代码。 “自动”功能可以让您重复使用它们,即使您不需要并减慢被一遍又一遍调用的代码的速度。
  2. Pandas 通常会占用更多内存,因为它会大量创建对象数组来解决字符串处理等棘手问题。
  3. 如果您的用例超出了 Pandas 的设计范围,它很快就会变得笨拙。但是,在其设计目的范围内,Pandas 功能强大且易于使用,可用于快速数据分析。

关于Python - Pandas 相对于 Numpy/Scipy 的主要改进是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30067051/

相关文章:

python - 从python中的矩阵正态分布中随机抽取样本

python - 在 python、go 或 julia 中快速直接访问像素

python - 根据索引矩阵对 numpy 矩阵进行排序

python - 在多索引数据框中定位特定数据

python - 这是将 JSON 数据集加载到 Pandas DataFrames 的最有效方法

python - 我如何在 Eclipse 中调试 openerp 代码

python - 使用节点行和列位置的字典将 Pandas 边列表转换为稀疏转换矩阵?

python - 在 Python 中获取第一个和最后一个函数参数

python - 致命的 Python 错误 : initfsencoding: unable to load the file system codec

python - 子进程无法使用 Pandas 执行文件