テストとして、pandas.HDFStore を使用して小さな 25 mg の csv ファイルを読み取ろうとしています。
store = pd.HDFStore('file.h5',mode='w')
for chunk in read_csv('file.csv',chunksize=50000):
store.append('df',chunk)
store.close()
これにより、コンピューターがスラッシングし、最終的に完了すると、file.h5 は 6.7 ギガバイトになります。何がファイル サイズを膨らませているのかわかりません。後でストアを見ると、そこにあるのは小さなデータフレームだけです。チャンクせずに csv を読み込んでストアに追加しても、問題はありません。
更新 1: Python 2.7.6、HDF5 バージョン 1.8.9、numpy 1.8.0、pytables 3.1.0、pandas 13.1、ubuntu 12.04 を使用して、Anaconda を実行しています。データは独自のものであるため、チャンク情報をオンラインで投稿することはできません。私はいくつかの混合型を持っています。すべてをオブジェクトとして読み込もうとすると、それでもクラッシュします。
更新 2: 混合型のすべての列を削除しましたが、まだ同じ問題が発生しています。違いがあれば、非常に大きなテキスト列がいくつかあります。
更新 3: 問題は、データフレームを hdfstore にロードしているようです。ファイルのサイズを大幅に縮小しましたが、非常に幅の広い列 (1259 文字) の 1 つを保持しました。csv ファイルのサイズが 878.6kb であるのに対し、hdfstore のサイズは 53 MB です。pytables は非常に幅の広い列を処理できませんか? それを超えると切り捨てる必要があるしきい値はありますか?