Python numpy.ndarray与pandas.DataFrame

Python numpy.ndarray与pandas.DataFrame,python,python-3.x,numpy,pandas,Python,Python 3.x,Numpy,Pandas,我需要做出一个战略决策,选择在我的程序中保存统计数据框架的数据结构的基础 我在一张大桌子里储存了数十万条记录。每个字段都是不同的类型,包括短字符串。我会对需要快速实时完成的数据进行多元回归分析和操作。我还需要使用一些相对受欢迎和支持良好的东西 我知道以下选手: array.array的列表 这是最基本的事情。不幸的是,它不支持字符串。我需要使用numpy作为它的统计部分,所以这个是不可能的 numpy.ndarray ndarray能够在每一列中保存不同类型的数组(例如np.dtype([('n

我需要做出一个战略决策,选择在我的程序中保存统计数据框架的数据结构的基础

我在一张大桌子里储存了数十万条记录。每个字段都是不同的类型,包括短字符串。我会对需要快速实时完成的数据进行多元回归分析和操作。我还需要使用一些相对受欢迎和支持良好的东西

我知道以下选手:

array.array的列表
这是最基本的事情。不幸的是,它不支持字符串。我需要使用numpy作为它的统计部分,所以这个是不可能的

numpy.ndarray
ndarray
能够在每一列中保存不同类型的数组(例如
np.dtype([('name',np.str_uuuu16),('grades',np.float64,(2,)]))
)。这似乎是一个天生的赢家,但是

pandas.DataFrame
这一个是在考虑统计用途的基础上建立的,但它是否足够有效


我读到,
pandas.DataFrame
是(尽管它共享相同的接口)。有人能解释一下吗?或者可能有更好的数据结构?

pandas.DataFrame
非常棒,可以与numpy的很多功能进行很好的交互。大部分
DataFrame
都是用Cython编写的,并且经过了相当优化。我怀疑Pandas API的易用性和丰富性将大大超过围绕numpy滚动您自己的接口所能获得的任何潜在好处。

“我了解到,
Pandas.DataFrame
不再基于
numpy.ndarray
”。不是真的-您所指的API更改只是意味着
pandas.Series
子类
NDFrame
,而不是直接子类
numpy.ndarray
,但是
NDFrame
使用的内部存储仍然由
numpy.ndarray
组成。运行一些测试。使用一些测试数据和您最有可能执行的操作,在numpy.ndarray和pandas中建立一种执行方法。对结果进行计时,以确定哪种方法更快。在构建测试时,您会注意到哪一个具有您所需的功能,以及易于实现。@RyanG运行测试意味着我需要制作两个版本的应用程序,并编写比我认为我的应用程序真正需要的更多的测试。我选择Python,是因为我希望最多在几个工作日内完成这项任务。我问这个问题是为了从你们这些对这两种框架都有一定经验的人那里得到一个主观的意见。@AdamRyczkowski-你不一定需要两个完整版本的程序。只需提取一个函数进行测试。构建测试背后的想法不仅是看哪一个更快,而且还要对每个库多了解一些。您应该发现哪个库为您尝试执行的操作提供了最简单的实现。一开始这可能很乏味,但你会学到一些知识,所以下次遇到类似的问题时,你会立即知道该采取什么样的选择。与实现时间相结合,更快的运行时间是一个额外的好处。但这是你的决定。相关问题:我知道这违反了SO的规则,但这正是我想要的观点。非常感谢。