«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно обрабатывать большие файлы CSV в Python 2.7?

Как эффективно обрабатывать большие файлы CSV в Python 2.7?

Опубликовано в 2025-03-05
Просматривать:130

How to Effectively Handle Large CSV Files in Python 2.7?

Чтение больших файлов .csv в Python

задача: Чтение массивных файлов .csv (до 1 миллиона рядов, 200 столбцов) в Python 2.7. Ошибки памяти. Однако этот метод становится непрактичным для больших файлов, поскольку он потребляет чрезмерную память. Процесс строк по мере их создания:

Избегайте загрузки всего файла в память. Вместо этого обрабатывает строки по мере их сгенерирования с использованием функции генератора. с Open (имя файла, «rb») как csvfile: dataReader = csv.reader (csvfile) Получите следующий (DataReader) # Получить строку заголовка Для строки в DataReader: Если строка [3] == Критерий: Учитывать ряд

2. Используйте функции генератора для фильтрации:

фильтра данных при обращении через файл с использованием функций генератора. Этот подход позволяет соответствовать нескольким последовательным строкам, отвечающим конкретному критерию. с Open (имя файла, «rb») как csvfile: dataReader = csv.reader (csvfile) Получите следующий (DataReader) # Получить строку заголовка урожай от дубля ( Lambda R: R [3] == Критерий, Dropwhile (Lambda R: R [3]! = Критерий, DataReader)) return

3. Оптимизируйте потребление памяти:

]
def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        for row in datareader:
            if row[3] == criterion:
                yield row
Refactor getData () для использования функции генератора, гарантируя, что только одна строка хранится в памяти в любое время.

Дополнительные советы для скорости:

]
def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        for row in datareader:
            if row[3] == criterion:
                yield row

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

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3