我一直在用numpy/scipy做数据分析。我最近开始学习 Pandas 。
我已经学习了一些教程,我试图了解 Pandas 相对于 Numpy/Scipy 的主要改进是什么。
在我看来,Pandas 的关键思想是将不同的 numpy 数组包装在一个数据框中,并围绕它使用一些实用函数。
Pandas 有什么革命性的东西我只是愚蠢地错过了吗?
最佳答案
Pandas 并不是特别革命性,它确实使用 NumPy 和 SciPy 生态系统以及一些关键的 Cython 代码来实现它的目标。它可以被视为功能的更简单 API,添加了关键实用程序(如连接)和更简单的分组功能,这些功能对于使用类似表的数据或时间序列的人特别有用。但是,虽然不是革命性的,但 Pandas 确实具有关键优势。
有一段时间,我还认为 Pandas 只是 NumPy 之上的实用程序,供那些喜欢 DataFrame 界面的人使用。但是,我现在认为 Pandas 提供了这些关键功能(这并不全面):
- 结构数组(不同类型的独立存储,而不是 NumPy 中结构化数组的连续存储)--- 在许多情况下这将允许更快的处理。
- 常见操作(文件加载、绘图、选择和连接/对齐数据)的界面更简单,可以用很少的代码轻松完成大量工作。
- 索引数组,这意味着操作总是对齐,而不必自己跟踪对齐。
- Split-Apply-Combine 是一种思考和实现数据处理的强大方法
但是,Pandas 也有缺点:
- Pandas 基本上是一个用户界面库,并不特别适合编写库代码。 “自动”功能可以让您重复使用它们,即使您不需要并减慢被一遍又一遍调用的代码的速度。
- Pandas 通常会占用更多内存,因为它会大量创建对象数组来解决字符串处理等棘手问题。
- 如果您的用例超出了 Pandas 的设计范围,它很快就会变得笨拙。但是,在其设计目的范围内,Pandas 功能强大且易于使用,可用于快速数据分析。
关于Python - Pandas 相对于 Numpy/Scipy 的主要改进是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30067051/