【问题标题】:High-dimensional data structure in PythonPython中的高维数据结构
【发布时间】:2016-09-15 15:41:13
【问题描述】:

在 python 中存储和分析高维日期的最佳方法是什么?我喜欢 Pandas DataFrame 和 Panel,我可以轻松地操纵轴。现在我有一个超立方体(dim >=4)的数据。我一直在考虑像 dict of Panels 之类的东西,元组作为面板条目。我想知道 Python 中是否有高亮度面板的东西。

2016 年 5 月 20 日更新: 非常感谢所有的答案。我已经尝试过 MultiIndex 和 xArray,但是我无法对它们中的任何一个发表评论。在我的问题中,我将尝试使用 ndarray 代替,因为我发现标签不是必需的,我可以单独保存它。

16 年 9 月 16 日更新: 最后我想出了使用 MultiIndex 。操作它的方法一开始相当棘手,但我现在有点习惯了。

【问题讨论】:

标签: python numpy pandas machine-learning multi-index


【解决方案1】:

MultiIndex 对于更高维度的数据最有用,正如 in the docsthis SO answer 所解释的那样,因为它允许您在 DataFrame 环境中处理任意数量的维度。

除了Panel,还有Panel4D——目前处于实验阶段。鉴于MultiIndex 的优势,我不建议使用此版本或三维版本。相比之下,我认为这些数据结构并没有太大的吸引力,而且确实会被淘汰。

【讨论】:

【解决方案2】:

如果您需要带标签的数组和类似 pandas 的智能索引,您可以使用 xarray 包,它本质上是 pandas 面板的 n 维扩展(面板将在未来在 pandas 中被弃用,取而代之的是 xarray)。

否则,有时使用可以是任何维度的普通 numpy 数组可能是合理的;您还可以拥有任意嵌套的任意维度的 numpy 记录数组。

【讨论】:

    【解决方案3】:

    我建议继续使用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
    

    这是一个超立方体数据。支持和问题以及更少的错误和许多其他好处将为您提供更好的服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      相关资源
      最近更新 更多