Подходит ли Dask для параллельного чтения больших CSV-файлов и разделения их на несколько файлов меньшего размера?
Разделение очень больших файлов csv на файлы меньшего размера
Ответы (2)
Да, dask может читать большие файлы CSV. Он разделит их на куски
df = dd.read_csv("/path/to/myfile.csv")
Затем при сохранении Dask всегда сохраняет данные CSV в несколько файлов.
df.to_csv("/output/path/*.csv")
Дополнительную информацию об этом см. в строках документации read_csv и to_csv.
Привет, Нуца Назгайде и добро пожаловать на SO. Прежде всего, я бы посоветовал вам прочитать о как спрашивать и mcve а>. ваш вопрос достаточно хорош, но было бы здорово создать образец вашего исходного фрейма данных. Я собираюсь создать базовый фрейм данных, но в вашем случае логика не должна сильно отличаться, так как вам просто нужно учитывать местоположение.
Создать кадр данных
import dask.dataframe as dd
import numpy as np
import pandas as pd
import string
letters = list(string.ascii_lowercase)
N = int(1e6)
df = pd.DataFrame({"member":np.random.choice(letters, N),
"values":np.random.rand(N)})
df.to_csv("file.csv", index=False)
Один parquet
файл (папка) на каждого участника
Если вы довольны выводом в формате parquet
, вы можете просто использовать параметр partition_on
как
df = dd.read_csv("file.csv")
df.to_parquet("output", partition_on="member")
Если вам действительно нужен csv
, вы можете конвертировать в этот формат. Я настоятельно рекомендую вам перенести ваши данные на parquet
.