Сглаживание плотности ядра Гаусса для pandas.DataFrame.resample?

Я использую pandas.DataFrame.resample для повторной выборки случайных событий с интервалом в 1 час и вижу очень стохастические результаты, которые, похоже, не исчезнут, если я увеличу интервал до 2 или 4 часов. Это заставляет меня задаться вопросом, есть ли у Pandas какой-либо метод для создания сглаженного ядра плотности, такой как метод плотности ядра Гаусса с регулируемой полосой пропускания для управления сглаживанием. Я ничего не вижу в документации, но подумал, что опубликую здесь, прежде чем публиковать на сервере списка разработчиков, поскольку это их предпочтение. Scikit-Learn имеет именно ту функцию плотности ядра Гаусса, которую я хочу, поэтому я попробуйте использовать его, но это было бы фантастическим дополнением к Pandas.

Любая помощь приветствуется!

hourly[0][344:468].plot()

введите здесь описание изображения


person user3654387    schedule 24.11.2014    source источник


Ответы (2)


Pandas имеет возможность применять агрегацию к скользящему окну. Параметр win_type управляет формой окна. Параметр center можно задать для того, чтобы метки устанавливались в центре окна, а не у правого края. Чтобы выполнить сглаживание по Гауссу:

hrly = pd.Series(hourly[0][344:468])
smooth = hrly.rolling(window=5, win_type='gaussian', center=True).mean(std=0.5)

http://pandas.pydata.org/pandas-docs/stable/computation.html#rolling

person kb0    schedule 18.05.2017

Теперь я обнаружил, что эта опция доступна в pandas.stats.moments.ewma и работает очень хорошо. Вот результаты:

from pandas.stats.moments import ewma

hourly[0][344:468].plot(style='b')
ewma(hourly[0][344:468], span=35).plot(style='k')

введите здесь описание изображения

person user3654387    schedule 24.11.2014
comment
Экспоненциально-взвешенное скользящее среднее — это фильтр реального времени (только ретроспективный) и не то же самое, что гауссовское ядро, которое работает с мнимым временем (просматривает вперед и назад). - person kb0; 18.05.2017