gpt4 book ai didi

python - Pandas 数据框中的平均标准

转载 作者:太空狗 更新时间:2023-10-29 22:17:48 25 4
gpt4 key购买 nike

有一个 pandas 数据框如下:

   a   b
0 1 12
1 1 13
2 1 23
3 2 22
4 2 23
5 2 24
6 3 30
7 3 35
8 3 55

我想找出每组中 b 列的平均标准差。我的以下代码为每组提供 0。

stdMeann = lambda x: np.std(np.mean(x))
print(pd.Series(data.groupby('a').b.apply(stdMeann)))

最佳答案

如评论中所述,您可以使用 .agg to aggregate通过多项统计:

In [11]: df.groupby("a")["b"].agg([np.mean, np.std])
Out[11]:
mean std
a
1 16 6.082763
2 23 1.000000
3 40 13.228757

pandas 让您传递调度字符串,而不是使用 numpy 函数:

In [12]: df.groupby("a")["b"].agg(["mean", "std"])  # just b
Out[12]:
mean std
a
1 16 6.082763
2 23 1.000000
3 40 13.228757

In [13]: df.groupby("a").agg(["mean", "std"]) # all columns
Out[13]:
b
mean std
a
1 16 6.082763
2 23 1.000000
3 40 13.228757

您还可以在每列的基础上指定要执行的操作:

In [14]: df.groupby("a").agg({"b": ["mean", "std"]})
Out[14]:
b
mean std
a
1 16 6.082763
2 23 1.000000
3 40 13.228757

注意:你得到 0 的原因是 np.std单个数字的 0 是 0(这不是错误让我有点惊讶,但我们就是这样):

In [21]: np.std(1)
Out[21]: 0.0

关于python - Pandas 数据框中的平均标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47085119/

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