小编ppm*_*pmt的帖子

Pandas 滚动 std 产生不一致的结果并且与 values.std 不同

使用 pandas v1.0.1 和 numpy 1.18.1,我想计算时间序列上具有不同窗口大小的滚动均值和标准差。在我正在处理的数据中,某些后续点的值可以是恒定的,这样 - 取决于窗口大小 - 滚动平均值可能等于窗口中的所有值,并且相应的 std 预计为 0。

但是,根据窗口大小,我看到使用相同 df 的不同行为。

MWE:

for window in [3,5]:
    values = [1234.0, 4567.0, 6800.0, 6810.0, 6821.0, 6820.0, 6820.0, 6820.0, 6820.0, 6820.0, 6820.0]
    df = pd.DataFrame(values, columns=['values'])
    df.loc[:, 'mean'] = df.rolling(window, min_periods=1).mean()
    df.loc[:, 'std'] = df.rolling(window, min_periods=1).std(ddof=0)
    print(df.info())
    print(f'window: {window}')
    print(df)
    print('non-rolling result:', df['values'].iloc[len(df.index)-window:].values.std())
    print('')
Run Code Online (Sandbox Code Playgroud)

输出:

window: 3
    values         mean          std
0   1234.0  1234.000000     0.000000
1   4567.0  2900.500000  1666.500000
2   6800.0  4200.333333  2287.053757
3   6810.0  6059.000000  1055.011216
4   6821.0 …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

5
推荐指数
1
解决办法
532
查看次数

标签 统计

numpy ×1

pandas ×1

python ×1