我一直在阅读有关 rolling() 函数的文档,但我似乎找不到同时合并前向和后向窗口的方法。我想要做的是计算前 10 个和过去 10 个事件的平均绝对偏差(甚至标准偏差)以进行异常值分析。
我能够通过做以一种骇人听闻的方式计算前进/过去 10 的平均值
df = pd.DataFrame({ 'date': pd.date_range(start='1/1/2017', end='12/31/2017'),
'value': np.random.rand(365)})
first_10 = df.rolling(window=10, win_type='triang')['value'].mean().shift().reset_index()
last_10 = df[::-1].rolling(window=10, win_type='triang')['value'].mean().shift().reset_index()
接着
pd.merge(first_10, last_10, on = ['level_1']).set_index(['level_1']).mean(axis=1)
但是因为你不能仅仅平均两个 MAD 来得到那个窗口的 MAD,所以我不能这样做。有没有人有更强大的方法来使用滚动函数进行这样的计算?感觉必须使用某种移位功能。
感谢您对此的帮助。