Python - Pandas比Numpy/Scipy有什么重大改进

Ven*_*tta 6 python numpy data-analysis scipy pandas

我一直在使用numpy/scipy进行数据分析.我最近开始学习熊猫.

我已经完成了一些教程,我试图了解Pandas在Numpy/Scipy上的主要改进是什么.

在我看来,Pandas的关键思想是在数据框中包含不同的numpy数组,其中包含一些实用函数.

有什么关于熊猫的革命性的东西,我只是愚蠢地错过了吗?

Tra*_*ant 11

Pandas不是特别具有革命性,并且使用NumPy和SciPy生态系统来完成它的目标以及一些关键的Cython代码.它可以被视为一个更简单的API功能,增加了关键实用程序,如连接和更简单的分组功能,这对于具有类似数据或时间序列的人特别有用.但是,虽然不是革命性的,但熊猫确实有重要的好处.

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

  1. 结构数组(不同类型的独立存储,而不是NumPy中结构化数组的连续存储) - 这将允许在许多情况下更快的处理.
  2. 更简单的通用操作接口(文件加载,绘图,选择和连接/对齐数据)使得在小代码中完成大量工作变得容易.
  3. 索引数组意味着操作始终是对齐的,而不是必须自己跟踪对齐.
  4. Split-Apply-Combine是一种思考和实现数据处理的强大方式

然而,熊猫有缺点:

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


cht*_*mon 7

我觉得把熊猫描述为"改进"Numpy/SciPy错过了很多重点.Numpy/Scipy非常关注有效的数值计算和解决科学家和工程师经常解决的数字问题.如果你的问题从公式开始并且从那里开始涉及数值解,你可能对这两个问题很好.

Pandas更加符合以存储在文件或数据库中的数据开头并且包含字符串和数字的问题.考虑从数据库查询中读取数据的问题.在Pandas中,您可以read_sql_query直接在一行中拥有可用的数据版本.Numpy/SciPy中没有相同的功能.

对于具有字符串或离散而非连续数据的数据,不存在groupby与匹配值上的表的功能或数据库类似的连接.

对于时间序列,使用日期时间索引处理时间序列数据有很大的好处,它允许您平滑地重新采样到不同的间隔,填写值并非常容易地绘制您的系列.

由于我的许多问题都是在电子表格中开始,我也非常感谢使用统一界面对Excel文件.xls.xlsx格式进行相对透明的处理.

还有一个更大的生态系统,像seaborn这样的软件包可以比基本的numpy/scipy东西更流畅的统计分析和模型拟合.