【问题标题】:Converting an DataFrame from pandas to dask将 DataFrame 从 pandas 转换为 dask
【发布时间】:2021-02-05 02:53:34
【问题描述】:

我遵循了此文档 dask.dataframe.from_pandas,并且有一些可选参数称为 npartitionschunksize

所以我试着写这样的东西:

import dask.dataframe as dd
import pandas as pd

df = pd.DataFrame(...)
df = dd.from_pandas(data=df)

它会引发该消息的错误: ValueError: Exactly one of npartitions and chunksize must be specified.

我想知道如何解决它,我应该如何计算 DataFrame 的 npartitionschunksize,就像 Dask 在调用 dask.dataframe.read_csv 时所做的那样?

【问题讨论】:

  • 有一个公式可以计算其中一个吗?

标签: python pandas dask partition chunks


【解决方案1】:

在构建 Dask 数据框之前,您需要选择npartitions(分区数)或chunksize(每个分区的大小)。您需要决定要将 pandas 数据帧拆分为多少个并行数据帧,或者您希望每个并行数据帧有多大。理想情况下,您希望根据系统的内存量以及可用的内核数来决定这一点。

【讨论】:

    【解决方案2】:

    我认为您需要提供 npartitions 或 chunksize。 就我而言,我尝试了两种情况,效果很好。但是当我指定两个参数时,它给了我同样的错误。

    因此,指定两者之一将清除错误。

    import dask.dataframe as dd
    import pandas as pd
    
    df = pd.read_csv(filepath)
    dd_df = dd.from_pandas(df, npartitions=100)
    

    dd_df =dd.from_pandas(df, chunksize=100)
    

    【讨论】:

    • 这个答案如何在现有答案之外添加任何内容?
    【解决方案3】:

    可能是 DASK 中的一个小故障......因为错误本身表明我们需要指定 npartitions(The number of partitions of the index to create)chunksize(The number of rows per index partition to use.) ..

    看到这个错误 -

    if (npartitions is None) == (chunksize is None):
       raise ValueError("Exactly one of npartitions and chunksize must be specified.")
    

    这里是 dask 数据帧中 chunksizenpartitions 的最佳实践

    ref 1 , ref 2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-17
      • 2017-03-23
      • 2020-07-28
      • 2017-04-13
      • 2021-03-29
      • 2017-04-27
      • 2017-01-28
      相关资源
      最近更新 更多