groupby在非常大的数据集上+ 10GB,具有python librairies,pandas,vaex和dask

问题描述

我有10 GB以上的交易数据,我使用dask读取数据,选择要插入的列,并根据需要对列进行分组。所有这一切都非常快,但是计算却无法正常工作,调试也很困难。

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

这是我的第一篇文章,对不起,如果没有足够的详细信息,或者我不清楚,请随时问我任何问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)