Как оптимизировать обработку больших файлов CSV?Python

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

Сообщение Anonymous »

TL;DR: Я обрабатываю большой CSV-файл (4 миллиона строк, 510 столбцов), но мне нужно всего несколько тысяч строк со всеми столбцами в конце. Весь процесс занимает более 70 минут и требует много памяти. Ищу способы оптимизации рабочего процесса с помощью Pandas.

Я столкнулся с некоторыми проблемами с производительностью и памятью при обработке большого набора данных CSV. Весь процесс, от чтения набора данных до сохранения окончательного CSV-файла, требует очень много времени и памяти. Хотя мне почти удается запустить его на своем локальном компьютере, я изо всех сил пытаюсь заставить его работать на сервере контроля качества. Я надеюсь получить совет о том, как оптимизировать этот рабочий процесс.
  • У меня есть набор данных с 4 миллионами строк и 510 столбцами. Однако для большинства этапов обработки мне нужно всего около 10 столбцов. В самом конце процесса мне нужно иметь все 510 столбцов, доступных для записи окончательного результата в формате CSV.
  • Чтение этого набора данных с помощью Pandas занимает около 20 минут. Мне удалось сократить это время до 15 минут, читая данные порциями, но это все равно долго.
  • После прочтения Я выполняю дедупликацию на основе составного ключа, что уменьшает набор данных с 4 миллионов строк примерно до 1,3 миллиона строк. Один только этот шаг дедупликации занимает еще 20 минут.
  • После завершения дедупликации я присоединил набор данных (1,3 миллиона строк) к другому набору данных меньшего размера. там около 3000 записей. Поскольку соединение основано на меньшем наборе данных, для окончательного результата мне нужно всего около 2950 строк из большего набора данных.
  • После объединения Я выполняю базовое форматирование и сохраняю результат в формате CSV. Конечный результат содержит все 700 столбцов (включая столбцы из обоих наборов данных), но только около 3000 строк.
Что мне нужно Помогите с:
  • Есть ли способ сократить время, необходимое для чтения этого большого набора данных (сейчас около 15–20 минут)?
  • Поскольку мне нужно всего лишь около В конечном выводе 3000 строк, но во время конвейера обрабатывается 1,3 миллиона строк. Есть ли способ минимизировать использование памяти, загружая только необходимые данные на ранних этапах процесса и извлекая оставшиеся столбцы позже?
  • Существуют ли в Pandas какие-либо передовые методы или методы для эффективной обработки больших файлов CSV, особенно когда большинство столбцов не нужны до последнего шага?
  • Есть ли предложения о том, как повысить эффективность использования памяти и производительность будет очень признательна, особенно если они придерживаются Pandas или подобных библиотек (поскольку такие библиотеки, как Dask, недоступны в нашей среде).


Подробнее здесь: https://stackoverflow.com/questions/791 ... processing
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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