计算熊猫滚动标准偏差的最快方法是什么?

时间:2021-07-05 07:20:48

标签: python pandas numpy pandas-groupby vectorization

我有一个数据集,需要按组计算滚动标准偏差和平均值。

Average_SP7 = dogs.groupby(by="name")["S"].transform(lambda x: x.rolling(7, 1).mean())

StdDevFin7 = dogs.groupby(by="name")["F"].transform(lambda x: x.rolling(7,1).std())

我知道就它而言,建议不要使用转换和应用。

我设法通过使用 numpy 卷积来计算滚动平均值,这大大加快了速度。

grouped= df.groupby(by=grp_by)[attr]
s = [[], []]
for k, group in grouped:
    convolved_SP = np.convolve(group, np.ones(window_size))
    convolved_SP = convolved_SP[:-(window_size - 1)]
    divisor = np.ones(len(convolved_SP)) * window_size
    divisor[:min(len(divisor), window_size-1)] = np.arange(1, min(len(divisor) + 1, window_size))
    convolved_SP = convolved_SP / divisor
    s[0].extend(group.index)
    s[1].extend(convolved_SP)
return_s = pd.Series(s[1], index=s[0])
return_s.sort_index(inplace=True)

Is 可以使用矢量化方法进行滚动标准偏差。我知道你需要滚动平均值,所以也许我可以在我的代码上构建。

输入:

                    F
name             
beg It xiam      11.0
beg It xiam      12.0
beg It xiam      13.0
beg It xiam       7.0
beg It xiam       5.5

名称“beg It xiam”的滚动标准差。

                        F
name                 
beg It xiam           NaN
beg It xiam      0.707107
beg It xiam      1.000000
beg It xiam      2.629956
beg It xiam      3.271085

0 个答案:

没有答案
相关问题