Я регулярно выполняю операции pandas с кадрами данных, превышающими 15 миллионов или около того, и мне бы хотелось иметь доступ к индикатору прогресса для определенных операций.Индикатор выполнения во время операций pandas (python)
Имеется ли индикатор прогресса на основе текста для операций pandas split-apply-comb?
Например, в чем-то вроде:
df_users.groupby(['userID', 'requestDate']).apply(feature_rollup)
где feature_rollup
является то запутанная функцией, которая займет много столбцов DF и создает новые столбцы пользователя с помощью различных методов. Эти операции могут занять некоторое время для больших кадров данных, поэтому я хотел бы знать, возможно ли иметь текстовый вывод в ноутбуке iPython, который обновляет меня в ходе выполнения.
До сих пор я пробовал индикаторы хода канонического цикла для Python, но они не взаимодействуют с пандами каким-либо значимым образом.
Я надеюсь, что в библиотеке/документации pandas есть что-то, что я пропустил, чтобы узнать о ходе объединения split-apply-comb. Простая реализация могла бы рассмотреть общее количество подмножеств фреймов данных, на которых работает функция apply
, и сообщать о ходе выполнения как завершенной части этих подмножеств.
Возможно, это что-то, что нужно добавить в библиотеку?
У вас есть% prun (профиль) на код? иногда вы можете делать операции на всем кадре, прежде чем применять их для устранения узких мест. – Jeff
@Jeff: вы делаете ставку, я сделал это раньше, чтобы выжать каждый последний бит производительности из него. Проблема действительно сводится к границе сокращения псевдо-карты, над которой я работаю, поскольку строки находятся в десятках миллионов, поэтому я не ожидаю, что увеличение скорости ускорит, просто хочу получить обратную связь о прогрессе. – cwharland
Рассмотрите cythonising: http://pandas.pydata.org/pandas-docs/dev/enhancingperf.html#cython-writing-c-extensions-for-pandas –