2016-05-18 4 views
3

Pythonで高次元の日付を保存し分析するには、どのような方法が最適ですか?私はPandas DataFrameとPanelが好きで、簡単に軸を操作できます。今私はハイキューブ(dim> = 4)のデータを持っています。私はPanelのdictのようなものを考えていました。私は、Pythonでハイディメンションのパネルがあるのだろうかと思います。Pythonでの高次元データ構造

更新20/05/16:すべての答えのための どうもありがとうございました。私はMultiIndexとxArrayを試しましたが、私はそれらのどれにもコメントできません。私の問題では、ラベルが不可欠ではないことが分かったので、代わりにndarrayを使用しようと考えています。

更新16/09/16: 私は最終的にはマルチインデックスを使用することを思いつきました。それを操作する方法は、当初はかなりトリッキーですが、今はそれに慣れています。

+0

'np.ndarray'はパンダのデータフレームのための基本となるタイプですが、それは次元以上をサポートしています。http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.ndarray。 html –

+0

PandasではMultiIndexingが大幅に改善されているため、一般的にPanelsではなく、これが好まれます。 – Alexander

答えて

4

MultiIndexは、DataFrame環境で任意の数のディメンションで作業できるため、in the docsthis SO answerのように高次元データに最も便利です。 Panelに加え

は、Panel4Dもある - 現在実験段階です。 MultiIndexの利点を考えれば、私はこれまたは3次元バージョンのどちらも使用することをお勧めしません。私は、これらのデータ構造が比較して大きな牽引力を獲得したとは思わないし、実際に段階的に廃止されるでしょう。

+0

パネルと多次元パネルは、将来のバージョンでは 'xarray'のために廃止予定です:http://pandas.pydata.org/pandas-docs/version/0.18.0/whatsnew.html#to-xarray – aldanor

3

スマートインデックスとラベル付き配列が必要な場合は、xarrayパッケージを使用することができます。このパッケージは、本質的にpandas Panelのn次元の拡張です(パネルは将来xandrayを使用してpandasで非推奨になります)。

そうでなければ、時々任意次元のものとすることができる普通numpyのアレイを使用することが合理的であってもよいです。任意の次元の任意のネストされたnumpyレコード配列を持つこともできます。

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 

。サポートや質問、バグの減少など、多くのメリットがあります。

関連する問題