当我运行这个时,我正在尝试计算log1p到整个列的大数据集(4GB~1250万行)时,我的PC已经冻结了:
df_train = dd.read_csv('data/train.csv')
s = df_train.unit_sales.map_partitions(np.log1p)
s.compute()
那么,我如何处理知道计算函数是否安全?
答案 0 :(得分:3)
请注意,当您调用.compute()
时,您正在将惰性Dask数据帧转换为内存中的Pandas数据帧。您的结果(在这种情况下为s.compute()
)应该适合记忆。如果您愿意,可以致电s.memory_usage().compute()
查看计算结果的大小。
相反,只使用.to_csv()
或.to_parquet()
等方法计算小结果或将大结果写回磁盘是很常见的。如果您在群集上并且想要使用分布式内存,那么您可能希望使用persist
而不是compute
。