[英]Pandas- how to compute a rolling forward 10/backward 10 mean absolute deviation?
我一直在閱讀關於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,所以我無法做到這一點。 有誰有更強大的方法來使用滾動函數進行此類計算? 感覺好像必須使用某種移位功能。
感謝對此的幫助。
你可以做這樣的事情
mad = lambda x: np.fabs(x - x.mean()).mean()
s.rolling(window=60).apply(mad, raw=True).plot(style='k')
從熊貓文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.