Sobes.tech
Back to questions
Middle
1

Есть 5 миллионов строк данных в Pandas — что делать, если 100 тысяч работало нормально, а 5 миллионов — нет?

Companies where asked
Бюро 1440Бюро 1440

Answer from AI

sobes.tech AI

Если при обработке 100 тысяч строк в Pandas всё работает нормально, а при увеличении до 5 миллионов — нет (например, возникает ошибка памяти или очень долго выполняется), стоит рассмотреть следующие подходы:

  • Оптимизация памяти:

    • Использовать типы данных с меньшим потреблением памяти (category для строк, float32 вместо float64 и т.п.).
    • Загружать данные по частям (чанками) с помощью параметра chunksize в pd.read_csv.
  • Обработка по частям:

    • Разбить данные на части и обрабатывать их поочередно, а затем агрегировать результаты.
  • Использование более эффективных инструментов:

    • Рассмотреть библиотеки, оптимизированные для больших данных, например, Dask, Vaex или PySpark.
  • Профилирование кода:

    • Проверить, какие операции занимают больше всего времени и памяти, и оптимизировать их.

Пример использования chunksize:

import pandas as pd

chunksize = 100000
results = []
for chunk in pd.read_csv('data.csv', chunksize=chunksize):
    # обработка каждого чанка
    processed = chunk[chunk['value'] > 0]  # пример фильтрации
    results.append(processed)

final_df = pd.concat(results)

Такой подход позволяет работать с большими файлами, не загружая всё в память сразу.