Python 如何在不重新加载大型CSV的情况下进行多个Dask计算
我必须处理大量(约10GB)CSV文件。我目前正在使用Dask将数据预处理成一些聚合的统计数据,然后用常规数据进一步分析 我遇到的问题是Dask为每次调用Python 如何在不重新加载大型CSV的情况下进行多个Dask计算,python,dask,Python,Dask,我必须处理大量(约10GB)CSV文件。我目前正在使用Dask将数据预处理成一些聚合的统计数据,然后用常规数据进一步分析 我遇到的问题是Dask为每次调用compute()重新加载数据。一些虚拟代码来说明问题: import dask.dataframe as dd ddf = dd.read_csv('very_large_file.csv') # ca. 10GB # Every line seems to trigger painfully slow re-reading of th
compute()
重新加载数据。一些虚拟代码来说明问题:
import dask.dataframe as dd
ddf = dd.read_csv('very_large_file.csv') # ca. 10GB
# Every line seems to trigger painfully slow re-reading of the CSV file from disk!
groupstats_A = ddf.groupby(['col1', 'col2']) \
.mean() \
.compute()
groupstats_B = ddf.groupby(['col3']) \
.mean() \
.compute()
groupstats_C = ddf.groupby(['col1', 'col2', 'col3']) \
.mean() \
.compute()
有没有办法优化此代码,使
compute()
函数不必每次调用都从磁盘读取大文件?这很像一个副本,但我找不到原始的
您可以按如下方式传递多个内容进行计算,任何可能的中间对象都将被共享
groupstats_A = ddf.groupby(['col1', 'col2']) \
.mean()
groupstats_B = ddf.groupby(['col3']) \
.mean()
groupstats_C = ddf.groupby(['col1', 'col2', 'col3']) \
.mean()
A, B, C = dask.compute(groupstats_A, groupstats_B, groupstats_C)
谢谢我也找了重复的,但也找不到。这个答案正是我想要的,它让一切变得更快。