与Numpy/Scipy相比,Pandas的主要改进是什么

2024-06-16 11:38:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我已经看了一些教程,我正试图了解熊猫比Numpy/Scipy的主要改进是什么。在

在我看来,Pandas的关键思想是将不同的numy数组包装在一个数据帧中,并在其周围添加一些实用函数。在

熊猫身上是否有我愚蠢地错过的革命性的东西?在


Tags: 数据函数numpypandas教程scipy数组关键
3条回答

熊猫并不是特别具有革命性的,它确实使用NumPy和SciPy生态系统来实现它的目标以及一些关键的Cython代码。它可以被看作是功能的一个更简单的API,它添加了一些关键实用程序,如joins和更简单的分组功能,这些功能对于具有类似表的数据或时间序列的人特别有用。但是,虽然不是革命性的,熊猫确实有关键的好处。在

有一段时间,我还认为Pandas只是那些喜欢DataFrame接口的用户在NumPy之上的实用程序。但是,我现在认为熊猫提供了以下关键特性(这并不全面):

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

然而,熊猫也有缺点:

  1. Pandas基本上是一个用户界面库,并不特别适合编写库代码。“自动”特性可以诱使您反复使用它们,即使您不需要,也可以减慢反复调用的代码。在
  2. Pandas通常会占用更多内存,因为它慷慨地创建对象数组来解决诸如字符串处理之类的棘手问题。在
  3. 如果你的用例超出了Pandas设计的范围,它很快就会变得笨拙。但是,在它的设计范围内,熊猫功能强大,易于快速进行数据分析。在

主要的一点是它引入了新的数据结构,如数据帧、面板等,并且与其他结构和libs有良好的接口。因此,总的来说,它是python生态系统的一个很好的扩展,而不是对其他lib的改进。对我来说,它是一个很好的工具,比如numpy,bcolz。我经常用它来重塑我的数据,在开始数据挖掘之前得到一个概述等等

我觉得把熊猫描述为“改进”纽比/希比,这一点大错特错了。Numpy/Scipy非常专注于高效的数值计算和解决科学家和工程师经常解决的数值问题。如果你的问题是从公式开始的,并且涉及到从那里得到的数值解,你可能对这两个问题很在行。在

Pandas更适合于以存储在文件或数据库中的数据为起点的问题,这些数据既包含字符串也包含数字。考虑从数据库查询中读取数据的问题。在Pandas中,可以直接使用^{}并在一行中拥有数据的可用版本。Numpy/SciPy中没有等效的功能。在

对于具有字符串或离散数据而不是连续数据的数据,没有等效的^{}功能,也没有类似于数据库的表在匹配值上的联接。在

对于时间序列,使用日期时间索引handling time series data有很大的好处,它允许您平滑地重新采样到不同的间隔,填充值并极容易地绘制序列。在

由于我的许多问题都是在电子表格中开始的,我也非常感谢对.xls和{}格式的Excel文件的相对透明处理。在

还有一个更大的生态系统,与基本的numpy/scipy相比,seaborn这样的软件包能够更流畅地进行统计分析和模型拟合。在

相关问题 更多 >