私は、ディスクの中にではなく、メモリに収まる大きなデータセットを処理しようとパンダとHDFStoreのpythonパンダ
でのpython 2.7を使用しています。
大きなサイズのデータセットを.h5ファイルに保存すると、各列のデータサイズは一定ではありません。たとえば、1つの列には5行の文字列と1行の文字列があります。別の
最初の繰り返しに小さいサイズのデータが含まれ、次のバッチに大きなサイズのデータが含まれていた場合、繰り返しでファイルにデータを書き込む際に問題が発生しました。
私は問題がMIN_SIZEが適切に使用されなかったということであったとのデータが、私はエラー
colsLen = {}
for col in dbCols:
curs.execute('SELECT MAX(CHAR_LENGTH(%s)) FROM table' % col)
for a in curs:
colsLen.update({col: a[0]})
# get the first row to create the hdfstore
rx = dbConAndQuery.dbTableToDf(con, table, limit=1, offset=0) #this is my utility that is querying the db
hdf.put("table", table, format="table", data_columns=True, min_itemsize=colsLen)
for i in range(rxRowCount/batchSize + 1):
rx = dbConAndQuery.dbTableToDf(con, table, limit=batchSize, offset=i * batchSize + 1)
hdf.append("table", table, format="table", data_columns=True, min_itemsize=colsLen)
hdf.close()
なしH5にデータベースをキャッシュするために、次のコードを使用し、カラムに適合していなかったことがわかりました問題はです:各列のデータの最大サイズを事前に問い合わせることができない場合は、どうすればHDFStoreを使用できますか?例えば、メモリ制約のために反復でデータを取得または作成する。
ディスクデータフレームでdaskを使用してデータを処理できることがわかりましたが、パンダで必要な機能がいくつかあります。そのため、データを既存のHDFStoreファイルに追加するバッチ処理が主なアイデアです。
ありがとうございます!