【问题标题】:How to do multiple Dask computations without re-loading my large CSV如何在不重新加载大型 CSV 的情况下进行多个 Dask 计算
【发布时间】:2019-03-22 12:50:03
【问题描述】:

我必须处理大量(大约 10GB)的 CSV 文件。我目前正在使用 Dask 将数据预处理为一些汇总统计数据,然后我使用常规 Pandas 进一步分析。

我遇到的问题是 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 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() 函数不必在每次调用时都从磁盘读取大文件?

【问题讨论】:

    标签: python dask


    【解决方案1】:

    这很像复制品,但我找不到原件。

    您可以将多个事物传递给计算,如下所示,任何可能的中间体都将被共享。

    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)
    

    【讨论】:

    • 谢谢!我确实也在寻找重复项,但也找不到。这个答案正是我想要的,它让一切变得更快。
    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多