将DataFrame从Pandas转换为Dask

问题描述

我遵循了本文档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.

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

解决方法

在构建Dask数据框之前,您需要选择npartitions(分区数)或chunksize(每个分区的大小)。您需要确定要将熊猫数据帧分割成多少个并行数据帧,或者要使每个并行数据帧多大。理想情况下,您要根据系统拥有的内存以及可用的内核数量来决定。

,

可能是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.")

以下是有关chunksizenpartitions在快速数据框中的最佳做法

ref 1ref 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)