2

我有超过 10 GB 的交易数据,我使用 DASK 读取数据,选择我感兴趣的列,并按我想要的列分组。所有这一切都非常快,但计算效果不佳,调试也很困难。

然后我决定使用 PANDAS chunksize 打开我的数据,每百万分块我的数据。然后使用 VAEX 将文件合并为一个大的 HDF5 文件。直到这里一切都很顺利,但是当我尝试按列分组并超过 50k 数据时,我的代码崩溃了。我想知道如何管理这个......我应该在将它们组合到 vaex 数据框之前对每个熊猫块进行分组,或者是否可以将我的 vaex 数据框转换为 dask 数据框,groupby 然后将按数据框分组的转换为 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