[英]How can I pivot a really large dataframe using dask?
我有一个像这样加载的 Dask 数据框:
dates_devices = dd.read_csv('data_part*.csv.gz', compression='gzip', blocksize=None)
dates_devices['cnt'] = 1
dates_devices.astype({'cnt': 'uint8'}).dtypes # make it smaller
我正在尝试使用 dask 来旋转表格:
final_table = (dates_devices
.categorize(columns=['date'])
.pivot_table(index='device',
columns='date',
values='cnt').fillna(0).astype('uint8'))
那“运行”就好了,但是当我在dd.to_parquet()
进行隐式计算时,我得到:
MemoryError: Unable to allocate 5.42 GiB for an array with shape (727304656,) and data type uint8
,
然后从这里拿走,我试过了
`$ echo 1 > /proc/sys/vm/overcommit_memory`
但内核仍然被杀死。 我在 Linux Xubuntu 上有 32GB RAM 和 32GB 交换,所以应该很适合 RAM。 有没有办法做到这一点或“测试”为什么我的内核被杀死了?
您可以尝试分块编写 dask 数据帧以克服内存限制:例如:
for i in range(final_table.npartitions):
partition = final_table.get_partition(i)`
请看看我是怎么做.to_sql
——你可以对.to_sql
采取类似的方法: https : .to_parquet
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.