我正在处理一些github用户数据,并试图创建同一城市中所有人的图表。为此,我需要在dask中使用合并操作。不幸的是,github用户群的大小是6M,似乎合并操作正在导致结果数据帧爆炸。我用下面的代码
import dask.dataframe as dd
gh = dd.read_hdf('data/github.hd5', '/github', chunksize=5000, columns=['id', 'city']).dropna()
st = dd.read_hdf('data/github.hd5', '/github', chunksize=5000, columns=['id', 'city']).dropna()
mrg = gh.merge(st, on='city').drop('city', axis=1)
mrg['max'] = mrg.max(axis=1)
mrg['min'] = mrg.min(axis=1)
mrg.to_castra('github')
Run Code Online (Sandbox Code Playgroud)
我可以使用此代码合并其他条件,例如名称/用户名,但尝试运行上述代码时出现MemoryError。
我尝试使用同步/多处理和线程调度程序来运行它。
我正在尝试在配备8GB RAM的Dell Laptop i7 4core上执行此操作。不应该以分块的方式熟悉此操作,还是我弄错了?使用pandas dataframe迭代器编写代码是唯一的出路吗?
不再支持 Castra,因此建议使用 HDF。从评论来看,使用写入多个文件to_hdf()解决了内存错误:
mrg.to_hdf('github-*.hdf')
相关文档:https://docs.dask.org/en/latest/ generated/dask.dataframe.DataFrame.to_hdf.html
| 归档时间: |
|
| 查看次数: |
673 次 |
| 最近记录: |