Вот структура моего текущего сценария:
python
Копировать код
Код: Выделить всё
import pandas as pd
# Step 1: Read the CSV file
df = pd.read_csv("large_file.csv")
# Step 2: Filter rows
filtered_df = df[df["column_name"] > 100]
# Step 3: Perform calculations
filtered_df["new_column"] = filtered_df["column_name"] * 2
# Step 4: Export the results
filtered_df.to_csv("filtered_output.csv", index=False)
The main bottlenecks seem to be in the reading and filtering stages when working with large datasets.
Использование chunksize в pd.read_csv:
Это позволяет обрабатывать меньшие фрагменты файла за один раз. время. Однако это усложняет логику фильтрации и агрегирования данных, поскольку требует объединения результатов по частям.
Переключение на Dask:
Я попытался использовать Dask для параллельной обработки, что улучшило производительность некоторой степени. Однако для небольших проектов это кажется излишним, а кривая обучения оказалась более крутой, чем ожидалось.
Предварительная сортировка CSV-файла:
Я отсортировал файл по критериям фильтрации, надеясь, что это ускорит этап фильтрации. Хотя в некоторых случаях это помогало, это не всегда практично, особенно когда источник данных не находится под моим контролем.
Чего я ожидал:
Достичь решения, сочетающего в себе простоту и производительность. В идеале я бы хотел придерживаться панд, если это возможно, но был бы не против изучить другие облегченные решения.
Подробнее здесь: https://stackoverflow.com/questions/792 ... -csv-files