gpt4 book ai didi

python - Pandas:计算 Z 分数以避免 "look ahead"偏差

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:19 27 4
gpt4 key购买 nike

我在名为“df”的数据框中有时间序列数据,并且计算 z 分数的代码如下:

mean = df.mean()
standard_dev = df.std()
z_score = (df - mean) / standard_dev

我想使用相应的观察结果和记录观察结果时已知的数据来计算每个观察结果的 z 分数。即我不想使用标准差和均值来合并特定时间点之后发生的数据。我只想使用时间 t、t-1、t-2....

的数据

我该怎么做?

最佳答案

使用 .expanding() - col 是您想要计算统计信息的列(如果出现以下情况,请删除 [col]您希望计算整个数据框):

您可能需要首先按时间列对值进行排序 - 表示为 time_col(以防尚未排序):

df=df.sort_values("time_col", axis=0)

然后:

df[col].sub(df[col].expanding().mean()).div(df[col].expanding().std())

引用: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.expanding.html

对于示例数据:

import pandas as pd

df=pd.DataFrame({"a": list("xyzpqrstuv"), "b": [6,5,7,1,-9,0,3,5,2,8]})

df["c"]=df["b"].sub(df["b"].expanding().mean()).div(df["b"].expanding().std())

输出:

   a  b         c
0 x 6 NaN
1 y 5 -0.707107
2 z 7 1.000000
3 p 1 -1.425880
4 q -9 -1.677484
5 r 0 -0.281450
6 s 3 0.210502
7 t 5 0.534207
8 u 2 -0.046142
9 v 8 1.062430

关于python - Pandas:计算 Z 分数以避免 "look ahead"偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60238203/

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