Я заблудился от того, как загрузить файл 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.