14

タイトルが問題をカバーしていると思いますが、明確にするために:

pandas python パッケージには、Python でテーブル データを保持するための DataFrame データ型がありますまた、 hdf5ファイル形式への便利なインターフェイスも備えているため、単純な dict のようなインターフェイスを使用して pandas DataFrame (およびその他のデータ) を保存できます ( pytablesがインストールされている場合) 。

import pandas 
import numpy
d = pandas.HDFStore('data.h5')
d['testdata'] = pandas.DataFrame({'N': numpy.random.randn(5)})
d.close()

ここまでは順調ですね。ただし、同じ hdf5 を RI にロードしようとすると、それほど単純ではないことがわかります。

> library(hdf5)
> hdf5load('data.h5')
NULL
> testdata
$block0_values
         [,1]      [,2]      [,3]       [,4]      [,5]
[1,] 1.498147 0.8843877 -1.081656 0.08717049 -1.302641
attr(,"CLASS")
[1] "ARRAY"
attr(,"VERSION")
[1] "2.3"
attr(,"TITLE")
[1] ""
attr(,"FLAVOR")
[1] "numpy"

$block0_items
[1] "N"
attr(,"CLASS")
[1] "ARRAY"
attr(,"VERSION")
[1] "2.3"
attr(,"TITLE")
[1] ""
attr(,"FLAVOR")
[1] "numpy"
attr(,"kind")
[1] "string"
attr(,"name")
[1] "N."

$axis1
[1] 0 1 2 3 4
attr(,"CLASS")
[1] "ARRAY"
attr(,"VERSION")
[1] "2.3"
attr(,"TITLE")
[1] ""
attr(,"FLAVOR")
[1] "numpy"
attr(,"kind")
[1] "integer"
attr(,"name")
[1] "N."

$axis0
[1] "N"
attr(,"CLASS")
[1] "ARRAY"
attr(,"VERSION")
[1] "2.3"
attr(,"TITLE")
[1] ""
attr(,"FLAVOR")
[1] "numpy"
attr(,"kind")
[1] "string"
attr(,"name")
[1] "N."

attr(,"TITLE")
[1] ""
attr(,"CLASS")
[1] "GROUP"
attr(,"VERSION")
[1] "1.0"
attr(,"ndim")
[1] 2
attr(,"axis0_variety")
[1] "regular"
attr(,"axis1_variety")
[1] "regular"
attr(,"nblocks")
[1] 1
attr(,"block0_items_variety")
[1] "regular"
attr(,"pandas_type")
[1] "frame"

これが私の質問になります。理想的には、R と pandas の間を行ったり来たりすることができます。私は明らかに pandas から R へのラッパーを書くことができます ( pandas MultiIndexを使用すると、よりトリッキーになる可能性があると思いますが)、そのデータを pandas で簡単に使用できるとは思いません。助言がありますか?

おまけ: 私が本当にやりたいのは、R のdata.tableパッケージを pandas データフレームと共に使用することです (キーイング アプローチは、両方のパッケージで疑わしいほど似ています)。その上で何か助けていただければ幸いです。

4

5 に答える 5

8

まだこれを見ている場合は、Google グループのこの投稿をご覧ください。HDF5 を介して pandas/R 間でデータを交換する方法を示します。

https://groups.google.com/forum/?fromgroups#!topic/pydata/0LR72GN9p6w

于 2013-01-18T20:45:51.937 に答える
3

pytables にドロップダウンして、そこにデータを保存/取得することは理にかなっています。

最終的に、DataFrame はシリーズの辞書であり、これが HDF5 テーブルです。互換性のないdtypeによる変換には制限がありますが、数値データの場合は簡単です。

pandas が HDF5 を保存する方法は、バイナリ BLOB のように見えます。HDF5 がクリーンにサポートする DataFrame のすべてのニュアンスをサポートする必要があります。

https://github.com/dalejung/trtools/blob/master/trtools/io/pytables.py

そのような pandas/hdf5 munging コードがいくつかあります。

于 2012-09-05T18:18:16.660 に答える
-1

csvファイルを共通のデータ形式として使用できます。R と python pandas の両方で簡単に操作できます。精度がいくらか失われる可能性がありますが、これが問題になるかどうかは、特定の問題によって異なります。

于 2012-09-05T09:51:14.880 に答える