gpt4 book ai didi

python-2.7 - Python Pandas 计算 groupby 方法的 Z 分数

转载 作者:行者123 更新时间:2023-12-02 03:34:58 25 4
gpt4 key购买 nike

我有一个这样的数据框:

df = pd.DataFrame({'Year' : ['2010', '2010', '2010', '2010', '2010', '2011', '2011', '2011', '2011', '2011', '2012', '2012', '2012', '2012', '2012'],
'Name' : ['Bob', 'Joe', 'Bill', 'Bob', 'Joe', 'Dave', 'Bob', 'Joe', 'Bill', 'Bill', 'Joe', 'Dave', 'Dave', 'Joe', 'Steve'],
'Score' : [95, 76, 77, 85, 82, 92, 67, 80, 77, 79, 82, 92, 64, 71, 83]})

我想获得每个 Year 中每个 Name 的 Z 分数。

如果像这样对 Year 列进行子集化,我可以这样做:

(df[df.Year == '2010'].groupby(['Year', 'Name'])['Score'].mean() - df[df.Year == '2010'].groupby(['Year', 'Name'])['Score'].mean().mean()) / ( df[df.Year == '2010'].groupby(['Year', 'Name'])['Score'].mean().std())

有没有更简洁的方法?

最佳答案

有一个zscore scipy 中的功能, 但要小心 scipy.stats.zscore 中的默认增量自由度为 0 :

In [171]:
import scipy.stats as ss
S=(df[df.Year == '2010'].groupby(['Year', 'Name'])['Score'].mean())
pd.Series(ss.zscore(s, ddof=1), S.index)
Out[171]:
Year Name
2010 Bill -0.714286
Bob 1.142857
Joe -0.428571
dtype: float64

关于python-2.7 - Python Pandas 计算 groupby 方法的 Z 分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24107440/

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