Как оптимизировать обработку больших файлов 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, особенно когда большинство столбцов не нужны до последнего шага?
< li>Мы будем очень признательны за любые предложения о том, как повысить эффективность и производительность памяти, особенно если они будут использовать Pandas или аналогичные библиотеки (поскольку такие библиотеки, как Dask, недоступны в нашей среде).


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

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

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

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

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

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

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