10 GB を超えるトランザクション データがあり、DASK を使用してデータを読み取り、関心のある列を選択し、必要な列でグループ化しました。これらはすべて信じられないほど高速でしたが、コンピューティングはうまく機能せず、デバッグは困難でした。
次に、PANDAS チャンクサイズを使用してデータを開くことにし、データを 100 万単位でチャンク化しました。次に、VAEX を使用してファイルを 1 つの大きな HDF5 ファイルに結合しました。ここまではすべてうまくいきましたが、列をグループ化して 50k データを超えると、コードがクラッシュします。私はこれをどのように管理するのか疑問に思っていました.vaexデータフレームでそれらを結合する前にすべてのpandasチャンクをグループ化する必要がありますか、それとも私のvaexデータフレームをdaskデータフレームに変換し、グループ化し、グループ化されたデータフレームをvaexに変換することは可能ですか?パンダに似ているので、私にとってはよりユーザーフレンドリーです。
path=....
cols=['client_1_id','amount', 'client_2_id', 'transaction_direction']
chunksize = 10**6
df = pd.read_csv(path,
iterator=True,
sep='\t',
usecols=cols,
chunksize=chunksize,
error_bad_lines=False)
import vaex
# Step 1: export to hdf5 chunks
for i, chunk in enumerate(df):
print(i)
df_chunk = vaex.from_pandas(chunk, copy_index=False)
df_chunk.export_hdf5(f'dfv_{i}.hdf5')
dfv = vaex.open('dfv_*.hdf5')
# Step 2: Combine back into one big hdf5 file
dfv.export_hdf5('dfv.hdf5')
dfv=vaex.open('dfv.hdf5')
初めての投稿です、情報不足、不明な点がありましたら、お気軽に質問してください。