22

既然 pandas 提供了数据框结构,那么 numpy 中是否需要结构化/记录数组?我需要对需要这种结构化数组类型框架的现有代码进行一些修改,但我正在考虑从现在开始使用 pandas 代替它。我会在任何时候发现我需要熊猫不提供的结构化/记录数组的一些功能吗?

4

3 回答 3

16

pandas 的 DataFrame 是一个高级工具,而结构化数组是一个非常低级的工具,使您能够将二进制数据块解释为类似表的结构。在 pandas 中很难做到的一件事是嵌套数据类型与结构化数组具有相同的语义,尽管这可以用分层索引来模仿(结构化数组不能做大多数你可以用分层索引做的事情)。

结构化数组也适用于通过内存映射加载的海量表格数据集 ( np.memmap)。不过,这是最终将在 pandas 中解决的限制。

于 2012-08-29T18:53:08.047 回答
7

我目前正在从各种 Numpy 数组过渡到 Pandas DataFrames。自从 Pandas、AFAIK 以来,如果主要建立在 Numpy 之上,这已经相对轻松。我的意思是.mean(), .sum()etc 都可以按您希望的方式工作。最重要的是,添加分层索引并使用.ix[](index) 属性和.xs()(cross-section) 方法提取任意数据片段的能力大大提高了我的代码的可读性和性能(主要是通过减少数量往返我的数据库)。

我尚未完全调查的一件事是 Pandas 与 Scipy 和 Matplotlib 更高级功能的兼容性。但是,如果出现任何问题,很容易拉出一个行为足够像数组的列以供这些库工作,甚至可以即时转换为数组。例如,DataFrame 的绘图方法依赖于 matplotlib 并为您处理任何转换。

此外,如果您像我一样,并且您的 Scipy 主要用途是统计模块,那么 pystatsmodels 正在迅速成熟并严重依赖 pandas。

那是我两分钱的价值

于 2012-08-22T16:48:03.987 回答
1

我从来没有花时间深入pandas研究,但我经常在 numpy.xml 中使用结构化数组。以下是一些注意事项:

  • recarrays如果您不介意失去按属性访问字段的可能性,结构化数组既方便又减少开销。但是,你有没有试过在 a 中使用minormax作为字段名recarray

  • NumPy 的开发时间比 .NumPy 的开发时间长得多pandas,拥有更多的团队,并且它变得无处不在,以至于许多第三方软件包都依赖它。您可以期望结构化数组比数据帧更便携pandas

  • pandas数据框容易挑选吗?例如,它们可以来回发送PyTables吗?

除非您 100% 确信永远不必与非pandas用户共享代码,否则您可能希望保留一些结构化数组。

于 2012-08-21T10:52:15.530 回答