2

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')

初めての投稿です、情報不足、不明な点がありましたら、お気軽に質問してください。

4

0 に答える 0