Как эффективно оптимизировать скрипт Python для обработки больших файлов CSV? [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как эффективно оптимизировать скрипт Python для обработки больших файлов CSV? [закрыто]

Сообщение Anonymous »

Я работал над сценарием Python для обработки больших файлов CSV (от 500 МБ до 1 ГБ). Скрипт выполняет такие задачи, как фильтрация строк на основе значений столбцов, вычисление новых полей и экспорт обработанных данных в другой файл CSV. Хотя функциональность работает нормально, сценарий становится значительно медленнее по мере увеличения размера файла, особенно при обработке файлов размером менее 1 ГБ.
Вот структура моего текущего сценария:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»