Преобразование фрейма данных из pandas в dask

#python #pandas #dask #partition #chunks

#python #pandas #dask #раздел #фрагменты

Вопрос:

Я следовал этой документации dask.dataframe.from_pandas, и там есть необязательные аргументы, называемые npartitions and chunksize .

Поэтому я пытаюсь написать что-то вроде этого:

 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.

Мне интересно, как это решить, как мне вычислить npartitions or chunksize фрейма данных, как это делает Dask во время вызова dask.dataframe.read_csv ?

Комментарии:

1. Существует формула для вычисления одного из них?

Ответ №1:

Вам нужно либо выбрать npartitions (количество разделов), либо chunksize (размер каждого раздела), прежде чем можно будет создать фрейм данных Dask. Вам нужно решить, на сколько параллельных фреймов данных вы хотите разделить свой фрейм данных 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)
  

Комментарии:

1. Как этот ответ добавляет что-либо помимо уже существующих ответов?

Ответ №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.")
  

вот рекомендации для chunksize npartitions фреймов данных dask и в них

ссылка 1 , ссылка 2