熊猫 - 如何计算前滚10 /后10意味着绝对偏差?

时间:2018-05-19 00:26:40

标签: python pandas rolling-computation

我一直在阅读关于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,所以我无法做到这一点。有没有人有更强大的方法来使用滚动功能进行这样的计算?感觉像必须使用某种移位功能。

感谢对此的帮助。

1 个答案:

答案 0 :(得分:0)

您可以这样做

mad = lambda x: np.fabs(x - x.mean()).mean()

s.rolling(window=60).apply(mad, raw=True).plot(style='k')

从熊猫documentation