24

PandasSeriesには、DataFramesPanelsHDF5 ファイルに格納する方法について、次の例があります。

いくつかのデータを準備します。

In [1142]: store = HDFStore('store.h5')

In [1143]: index = date_range('1/1/2000', periods=8)

In [1144]: s = Series(randn(5), index=['a', 'b', 'c', 'd', 'e'])

In [1145]: df = DataFrame(randn(8, 3), index=index,
   ......:                columns=['A', 'B', 'C'])
   ......:

In [1146]: wp = Panel(randn(2, 5, 4), items=['Item1', 'Item2'],
   ......:            major_axis=date_range('1/1/2000', periods=5),
   ......:            minor_axis=['A', 'B', 'C', 'D'])
   ......:

ストアに保存します。

In [1147]: store['s'] = s

In [1148]: store['df'] = df

In [1149]: store['wp'] = wp

ストアにあるものを調べます。

In [1150]: store
Out[1150]: 
<class 'pandas.io.pytables.HDFStore'>
File path: store.h5
/df            frame        (shape->[8,3])  
/s             series       (shape->[5])    
/wp            wide         (shape->[2,5,4])

閉店:

In [1151]: store.close()

質問:

  1. 上記のコードで、データが実際にディスクに書き込まれるのはいつですか?

  2. .csvファイルに存在する何千もの大きなデータフレームを単一のファイルに追加したいとし.h5ます。それらを読み込んで.h5ファイルに 1 つずつ追加する必要があるのは、メモリを大量に消費するため、一度にすべてをメモリに格納する余裕がないためです。これは HDF5 で可能ですか? それを行う正しい方法は何ですか?

  3. パンダのドキュメントには、次のように記載されています。

    「これらのストアは、一度書き込まれると追加できません(削除して書き直すだけです。また、クエリもできません。全体を取得する必要があります。」

    appendable でも queryable でもないとはどういう意味ですか? また、書かれているのではなく、一度閉じられたと言うべきではありませんか?

4

2 に答える 2

4

質問 2 に答えると、pandas 0.18.0 で次のことができます。

store = pd.HDFStore('compiled_measurements.h5')
for filepath in file_iterator:
    raw = pd.read_csv(filepath)
    store.append('measurements', raw, index=False)

store.create_table_index('measurements', columns=['a', 'b', 'c'], optlevel=9, kind='full')
store.close()

ドキュメントのこの部分に基づいています。

持っているデータの量によっては、インデックスの作成に大量のメモリが消費される可能性があります。PyTables のドキュメントでは、optlevelの値について説明しています。

于 2016-08-16T13:34:15.950 に答える