gpt4 book ai didi

python - Python 数据框中的滚动和累积标准差

转载 作者:行者123 更新时间:2023-11-30 22:34:20 25 4
gpt4 key购买 nike

是否有矢量化运算来计算 Python DataFrame 的累积和滚动标准差 (SD)?

例如,我想添加一个列“c”,它根据“a”列计算累积 SD,即在索引 0 中,它由于 1 个数据点而显示 NaN,而在索引 1 中,它计算基于2 个数据点,依此类推。

同样的问题也适用于滚动 SD。有没有一种无需迭代 df.itertuples() 即可有效计算的方法?

import numpy as np
import pandas as pd

def main():
np.random.seed(123)
df = pd.DataFrame(np.random.randn(10, 2), columns=['a', 'b'])
print(df)

if __name__ == '__main__':
main()

最佳答案

对于基于列“a”的累积 SD,让我们使用滚动,窗口大小为数据帧的长度,min_periods = 2:

df['a'].rolling(len(df),min_periods=2).std()

输出:

          a         b         c
0 -1.085631 0.997345 NaN
1 0.282978 -1.506295 0.967753
2 -0.578600 1.651437 0.691916
3 -2.426679 -0.428913 1.133892
4 1.265936 -0.866740 1.395750
5 -0.678886 -0.094709 1.250335
6 1.491390 -0.638902 1.374933
7 -0.443982 -0.434351 1.274843
8 2.205930 2.186786 1.450563
9 1.004054 0.386186 1.403721

对于一次基于两个值的滚动 SD:

df['c'] = df['a'].rolling(2).std()

输出:

          a         b         c
0 -1.085631 0.997345 NaN
1 0.282978 -1.506295 0.967753
2 -0.578600 1.651437 0.609228
3 -2.426679 -0.428913 1.306789
4 1.265936 -0.866740 2.611073
5 -0.678886 -0.094709 1.375197
6 1.491390 -0.638902 1.534617
7 -0.443982 -0.434351 1.368514
8 2.205930 2.186786 1.873771
9 1.004054 0.386186 0.849855

关于python - Python 数据框中的滚动和累积标准差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44879517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com