pandas.DataFrame.resample的高斯核密度平滑?

时间:2014-11-24 07:09:56

标签: python pandas time-series resampling kernel-density

我正在使用pandas.DataFrame.resample将随机事件重新采样到1小时间隔,并且看到非常随机的结果,如果我将间隔增加到2或4小时,似乎不会消失。这让我想知道Pandas是否有任何类型的方法来生成平滑密度内核,如高斯核密度方法,带有可调节带宽来控制平滑。我没有在文档中看到任何内容,但我想在发布到开发人员列表服务器之前发布此处,因为这是他们的偏好。 Scikit-Learn有precisely the Gaussian kernel density function that I want,所以我会尝试使用它,但它会成为Pandas的绝佳补充。

非常感谢任何帮助!

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

enter image description here

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

我现在发现这个选项在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')

enter image description here