在python中存储和分析高维日期的最佳方法是什么?我喜欢Pandas DataFrame和Panel,我可以轻松操控轴。现在我有一个超立方体(dim> = 4)的数据。我一直在想像Panels的dict,作为面板条目的元组。我想知道Python中是否存在高度暗淡的面板。
更新20/05/16: 非常感谢所有答案。我已经尝试过MultiIndex和xArray,但是我无法评论它们中的任何一个。在我的问题中,我将尝试使用ndarray,因为我发现标签不是必需的,我可以单独保存。
更新16/09/16: 我最终想到使用MultiIndex。一开始操纵它的方法非常棘手,但我现在已经习惯了。
答案 0 :(得分:5)
MultiIndex
对于更高维度数据最有用,如in the docs和this SO answer所述,因为它允许您在DataFrame
环境中使用任意数量的维度。
除Panel
外,还有Panel4D - 目前处于试验阶段。鉴于MultiIndex
的优点,我不建议使用这个或三维版本。我不认为这些数据结构相比之下已经获得了很大的吸引力,并且确实会被逐步淘汰。
答案 1 :(得分:3)
如果您需要带标签的数组和类似熊猫的智能索引,您可以使用xarray
包,这实际上是pandas Panel的n维扩展(面板在将来的pandas中被弃用,有利于xarray)。
否则,使用可以具有任何维度的普通numpy数组有时是合理的;你也可以随意嵌套任意维度的numpy记录数组。
答案 2 :(得分:1)
我建议继续使用DataFrame
,但使用MultiIndex
功能。 DataFrame
得到更好的支持,您可以使用MultiIndex
保留所有维度。
实施例
df = pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b'], index=['A', 'B'])
df3 = pd.concat([df for _ in [0, 1]], keys=['one', 'two'])
df4 = pd.concat([df3 for _ in [0, 1]], axis=1, keys=['One', 'Two'])
print df4
看起来像:
One Two
a b a b
one A 1 2 1 2
B 3 4 3 4
two A 1 2 1 2
B 3 4 3 4
这是一个超多维数据集。而且你会得到更好的支持和问题,更少的错误和许多其他好处。