У меня есть очень большой файл данных CSV, который разделен на более мелкие куски / части. Но pandas не кажется хорошей идеей, если вы пытаетесь загрузить миллионы или больше строк, потому что он по существу загружен в вашу RAM (я пробовал это, и ядро просто умерло вместо этого). Итак, я думаю об использовании Dask. Теперь я знаком с pandas, но не с Dask. Похоже, что об этом тоже не так много учебников.
Когда я пытаюсь загрузить одну часть файла csv (около 60.000 ~ строк) с помощью pandas, он все равно работает нормально. Проблема в том, что я пытался загрузить все детали (их сотни). Я хочу использовать Dask для этого, но даже загрузка одной части все равно не удалась.
import dask.dataframe as dd
import pandas as pd
ddf = dd.read_csv("path/part-000", header=None, blocksize=None)
Когда я попробовал приведенный выше код, сначала он работает нормально, но весь код, который я делал после этого, всегда приводит к в ошибке. Я также не могу поставить npartitions при чтении файла непосредственно из dask.
len(ddf)
ValueError: Mismatched dtypes found in `pd.read_csv`/`pd.read_table`.
+--------+--------+----------+
| Column | Found | Expected |
+--------+--------+----------+
| 1 | object | float64 |
| 2 | object | float64 |
| 4 | object | int64 |
+--------+--------+----------+
Поэтому я сначала загрузил его из pandas, а затем преобразовал в dask.
df = pd.read_csv("path/part-000", header=None)
ddf = dd.from_pandas(df,npartitions=64)
Это работает, но мне не нравится этот подход, поскольку, как я уже сказал, миллионы строк разделены на более мелкие куски / части, поэтому загрузка его в pandas и преобразование его в dask не кажется слишком эффективным.
Таким образом, мои вопросы могут быть суммированы в этом.
Как мне загрузить файл непосредственно в Dask, используя также такие параметры, как blocksize
или npartitions
?
Как загрузить много файлов в Dask? В pandas я обычно использую функцию append()
, но понятия не имею, правильный ли это подход.