Как правильно загрузить CSV-файл в Dask? - PullRequest
0 голосов
/ 05 апреля 2020

Я заблудился от того, как загрузить файл CSV с помощью Dask.

У меня есть сотни файлов CSV, которые мне нужно загрузить сразу. Загрузка с pandas не работает, потому что она очень большая и для этого потребуется много оперативной памяти.

import dask.dataframe as dd
all_ddf = dd.read_csv("path/part-*", header=None, blocksize="10MB")

Приведенный выше код может работать просто отлично, не возникло никаких ошибок. Но когда я пытаюсь выполнить очень простую команду, она сразу же запускается с ошибкой.

all_ddf.head()

ValueError: Несоответствующие dtypes найдены в pd.read_csv / pd.read_table.

+ -------- + -------- + ---------- + | Колонка | Найдено | Ожидаемый | + -------- + -------- + ---------- + | 1 | объект | float64 | | 2 | объект | float64 | | 4 | объект | int64 | + -------- + -------- + ---------- +

В следующих столбцах также возникли исключения при конвертации:

  • 1 ValueError ("не удалось преобразовать строку в число с плавающей точкой: '\\ N'",)
  • 2 ValueError ("не удалось преобразовать строку в число с плавающей точкой: '\\ N'",)
  • 4 ValueError ("недопустимый литерал для int () с основанием 10: '26023,26022'",)

Обычно это происходит из-за сбоя вывода dtype dask, и может можно исправить, указав dtypes вручную, добавив:

dtype = {1: 'объект', 2: 'объект', 4: 'объект'}

к вызову read_csv / read_table.

Я не знаю, что я сделал не так. И я не знаком с Даском, чтобы понять, что пошло не так. Я не знаю, является ли это правильным способом загрузки CSV-файла, используя python.

1 Ответ

0 голосов
/ 05 апреля 2020

Ответ на ваш вопрос в сообщении об ошибке, которое Dask предоставил

Обычно это происходит из-за сбоя вывода dtype dask, и его можно исправить, указав dtypes вручную, добавив:

dtype={1: 'object', 2: 'object', 4: 'object'}

на вызов read_csv / read_table.

...