web-dev-qa-db-ja.com

Pandas h5pyで作成されたhdf5ファイルを読み取れません

H5pyで作成したHDF5形式のファイルを読み込もうとすると、pandasエラーが表示されます。何か問題があるのでしょうか?

import h5py
import numpy as np
import pandas as pd
h5_file = h5py.File('test.h5', 'w')
h5_file.create_dataset('zeros', data=np.zeros(shape=(3, 5)), dtype='f')
h5_file.close()
pd_file = pd.read_hdf('test.h5', 'zeros')

エラーが発生します:TypeError:オブジェクトが存在しないか値が渡されない場合、ストアを作成できません

(ファイルを読み取るときにh5pyで行うように)キーセットを '/ zeros'に指定しようとしましたが、うまくいきませんでした。

Pandas.HDFStoreを使用して読み込んだ場合、空のストアが返されます。

store = pd.HDFStore('test.h5')
>>> store
<class 'pandas.io.pytables.HDFStore'>
File path: test.h5
Empty

作成したばかりのファイルをh5pyで読み取るのに問題はありません。

h5_back = h5py.File('test.h5', 'r')
h5_back['/zeros']
<HDF5 dataset "zeros": shape (3, 5), type "<f4">

これらのバージョンを使用する:

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin

pd.__version__
'0.16.2'
h5py.__version__
'2.5.0'

事前に感謝します、マーシャ

18
Masha L.

私はpandas.iopytablesモジュールに少し取り組みましたが、私が知っていることからpandas HDFファイルとの相互作用は特定の構造に限定されますpandasは理解しています。これらがどのように見えるかを確認するには、

import pandas as pd
import numpy as np
pd.Series(np.zeros((3,5),dtype=np.float32).to_hdf('test.h5','test')

HDFView で 'test.h5'を開くと、DataFrameを再作成するために必要な4つのアイテムを含むパス/testが表示されます。

HDFView of test.h5

したがって、NumPy配列を読み取るための唯一のオプションは、それらを直接読み取ってからPandasオブジェクトに変換することです。

14
Kevin S