gpt4 book ai didi

python - 计算数据框中多个组的 z 分数

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:25 25 4
gpt4 key购买 nike

对于 Python 中的数据框(见下文),我想使用 S 的元素所属的一组 G 的均值和标准差来计算 S 的 z 分数,即 S 的 s属于G群g,

s_z = (s - mu(g))/sigma(g).

最优雅的方法是什么?

    G         S         
0 B 0.444939
1 D 0.407554
2 C 0.460148
3 B 0.465239
4 A 0.462691
5 A 0.016545
6 D 0.850445
7 C 0.817744
8 B 0.777962
9 C 0.757983
10 C 0.934829

最佳答案

我认为您需要带有 lambda 函数的 groupby - 使用 meanstd 或传递 scipy.stats.zscore , 只需更改默认的 ddof:

from  scipy.stats import zscore

df['s_z'] = df.groupby('G')['S'].transform(lambda x: (x-x.mean())/x.std())
df['s_z1'] = df.groupby('G')['S'].transform(lambda x: zscore(x, ddof=1))
print (df)
G S s_z s_z1
0 B 0.444939 -0.630865 -0.630865
1 D 0.407554 -0.707107 -0.707107
2 C 0.460148 -1.397499 -1.397499
3 B 0.465239 -0.522127 -0.522127
4 A 0.462691 0.707107 0.707107
5 A 0.016545 -0.707107 -0.707107
6 D 0.850445 0.707107 0.707107
7 C 0.817744 0.371317 0.371317
8 B 0.777962 1.152993 1.152993
9 C 0.757983 0.075715 0.075715
10 C 0.934829 0.950467 0.950467

关于python - 计算数据框中多个组的 z 分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54604875/

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