何时使用 pandas 系列、numpy ndarrays 或简单的 python 字典?

新手上路,请多包涵

我是学习 Python 及其一些库(numpy、pandas)的新手。

我找到了很多 关于 numpy ndarrays、pandas 系列和 python 字典如何工作的文档。

但由于我对 Python 缺乏经验,我很难确定 何时 使用它们中的每一个。而且我还没有找到任何可以帮助我理解和决定何时使用每种数据结构更好的最佳实践。

一般来说,是否有任何最佳实践来决定应将特定数据集加载到这三种数据结构中的哪一种(如果有)?

原文由 Rodolfo Orozco 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 628
2 个回答

我通常应用的经验法则: 使用仍能满足您需求的最简单的数据结构。如果我们将数据结构从最简单到最不简单进行排序,结果通常是这样的:

  1. 字典/列表
  2. 数组
  3. 熊猫系列/数据框

所以首先考虑字典/列表。如果这些允许您执行所需的所有数据操作,那么一切都很好。如果没有,开始考虑 numpy 数组。迁移到 numpy 数组的一些典型原因是:

  • 您的数据是二维的(或更高维的)。虽然嵌套字典/列表可以用来表示多维数据,但在大多数情况下,numpy 数组会更高效。
  • 你必须执行一堆数值计算。正如 zhqiat 已经指出的那样,在这种情况下,numpy 将提供显着的加速。此外,numpy 数组捆绑了大量的 数学函数

然后还有一些超越 numpy 数组和更复杂但也更强大的 pandas 系列/数据帧的典型原因:

  • 您必须将多个数据集相互合并,或者对数据进行重塑/重新排序。 该图 很好地概述了 pandas 允许您执行的所有“数据整理”操作。
  • 您必须将数据导入或导出到特定文件格式,如 Excel、HDF5 或 SQL。 Pandas 为此提供了方便的 导入/导出功能

原文由 Xukrao 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果你想要一个告诉你只使用一种数据结构的答案,这里有一个: 使用 pandas series/dataframe structures

pandas 系列对象可以看作是增强的 numpy 一维数组,而 pandas dataframe 可以看作是增强的 numpy 二维数组。主要区别在于 pandas series 和 pandas dataframes 具有显式索引,而 numpy 数组具有隐式索引。所以,在你认为使用类似的任何 python 代码中

import numpy as np
a = np.array([1,2,3])

你可以使用

import pandas as pd
a = pd.Series([1,2,3])

numpy 数组中的所有函数和方法都适用于 pandas 系列。类似地,数据帧和 numpy 二维数组也可以这样做。

您可能还有一个问题是关于 numpy 数组和 pandas 系列之间的性能差异。这是一篇显示使用这两种工具的性能差异的帖子: performance of pandas series vs numpy arrays

请注意,即使以明确的方式,与 numpy 相比,pandas 系列的性能也略有下降,您可以通过调用 pandas 系列的 values 方法来解决这个问题:

 a.values

在 pandas 系列上应用 values 方法的结果将是一个 numpy 数组!

原文由 Joao Paulo Nogueira 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题