Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: Python, CSV, pandas, chunking, memory optimization

Как работать с большими CSV-файлами в Python?

Вопрос проверяет знание эффективных методов обработки больших CSV-файлов в Python, которые не помещаются в оперативную память.

Короткий ответ

Для работы с большими CSV-файлами в Python используют чтение по частям (chunking) с помощью pandas или встроенного модуля csv. Это позволяет обрабатывать данные порциями, не загружая весь файл в память. Также можно использовать библиотеку Dask для параллельной обработки. Важно выбирать подходящие типы данных и избегать избыточных операций.

Длинный ответ

Проблема работы с большими CSV-файлами

Стандартные методы загрузки CSV-файлов, такие как pd.read_csv() без параметров, загружают весь файл в оперативную память. Если файл превышает доступный объем RAM, программа завершится с ошибкой MemoryError. Для решения этой проблемы применяются техники чанковой обработки.

Чтение по частям с pandas

Pandas предоставляет параметр chunksize в функции read_csv(), который возвращает итератор по частям данных (DataFrame). Каждая часть обрабатывается отдельно, а затем результат агрегируется.

import pandas as pd

chunk_size = 10000  # количество строк в одном чанке
results = []

for chunk in pd.read_csv('large_file.csv', chunksize=chunk_size):
    # Фильтрация или агрегация данных
    filtered = chunk[chunk['column'] > 100]
    results.append(filtered)

final_df = pd.concat(results)

Использование модуля csv

Встроенный модуль csv позволяет читать файл построчно, что экономит память, но требует ручной обработки данных.

import csv

with open('large_file.csv', 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        # Обработка каждой строки
        process(row)

Оптимизация типов данных

При загрузке данных можно указать типы столбцов через параметр dtype, чтобы уменьшить потребление памяти. Например, использовать int32 вместо int64.

dtypes = {'id': 'int32', 'value': 'float32'}
df = pd.read_csv('data.csv', dtype=dtypes)

Параллельная обработка с Dask

Библиотека Dask позволяет обрабатывать данные, превышающие объем памяти, используя параллельные вычисления и ленивые вычисления.

import dask.dataframe as dd

df = dd.read_csv('large_file.csv')
result = df[df['column'] > 100].compute()

Вывод

Для работы с большими CSV-файлами в Python следует использовать чанковую загрузку (pandas chunksize или модуль csv), оптимизировать типы данных и при необходимости применять Dask для распределенных вычислений. Это позволяет эффективно обрабатывать данные, не превышая лимиты оперативной памяти.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Python

    Python

  • Pandas

Ключевые слова

#Python

#CSV

#pandas

#chunking

#memory optimization

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.