Пользовательская функция поворота, вызывающая высокую частоту отказов страниц и ручек - PullRequest
0 голосов
/ 10 июля 2019

У меня есть (большой) фрейм данных из ~ 17 миллионов строк и 7 столбцов, которые я хочу транспонировать (сводить) на основе двух уникальных столбцов.Из-за ограничений памяти я не могу использовать функцию pandas.pivot_table.Поэтому я попытался создать свой собственный фрагмент кода, который будет последовательно переносить этот фрейм данных.Код можно посмотреть по следующему адресу: https://bpaste.net/show/xRyQ

К сожалению, через некоторое время моя частота ошибок и количество обращений к странице начинаются все более резко.Более того, моя нестраничная память уходит в ноль.В настоящее время я не уверен, происходит ли это из-за утечки памяти, или это в основном из-за того, что мой «новый, развернутый кадр данных» увеличился в размере и, следовательно, потребляет память.

Поэтому мои два основных вопросаbe:

  • Какова точная причина моих наблюдений?Это происходит из-за утечки памяти или из-за растущего размера фрейма данных?
  • Какие изменения / улучшения я могу внести в мой код Python, чтобы исправить эти проблемы с памятью / ускорить решение?Например, можно ли разделить данные по библиотеке Dask?Я скорее ничего не изменяю в своих технических характеристиках.

Мои аппаратные характеристики:

  • 16 ГБ ОЗУ
  • 8 ядер ЦП, Intel i7-6700 (3,4 ГГц)
  • Windows 7, 64 бита

Заранее спасибо, и, пожалуйста, дайте мне знать, если у вас есть дополнительные вопросы:)

1 Ответ

1 голос
/ 10 июля 2019

Поскольку вы заранее знаете размер вашего pivot_df, может быть лучше предварительно выделить весь файл pivot_df, а затем заполнять строки вместо добавления строки за строкой, что каждый раз приводит к копированию кадра данных (см. Также этот ответ ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...