numpy.ndarray 与 pandas.DataFrame 区别
我需要在我的程序中选择一个合适的数据结构来存储统计数据框,这个决定很重要。
我会在一个大表格里存储成千上万条记录。每个字段的类型都不一样,包括短字符串。我需要快速地进行多重回归分析和数据处理,这些操作需要实时完成。而且,我还希望使用一些比较流行且支持良好的工具。
我知道以下几种选择:
列表 array.array
这是最基本的选择。不过,它不支持字符串。而且我还需要用到numpy来处理统计部分,所以这个选项就不考虑了。
numpy.ndarray
ndarray
可以在每一列中存储不同类型的数组(例如 np.dtype([('name', np.str_, 16), ('grades', np.float64, (2,))])
)。看起来这是个不错的选择,但……
pandas.DataFrame
这个数据结构是专门为统计用途设计的,但它的效率够吗?
我听说 pandas.DataFrame
现在已经 不再基于 numpy.ndarray
了(虽然它们的接口是一样的)。有没有人能解释一下这个情况?或者说,是否还有更好的数据结构可以选择?
1 个回答
26
pandas.DataFrame
非常棒,它和很多 numpy 的功能配合得很好。大部分的 DataFrame
是用 Cython 写的,这让它的性能非常好。我觉得,使用起来的简单方便和 Pandas 提供的丰富功能,远远超过了你自己去做一些 numpy 接口可能带来的好处。