我有超过 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')
这是我的第一篇文章,对不起,如果没有足够的细节,或者我不清楚,请随时问我任何问题。