首页 > 后端开发 > Python教程 > 如何在 Pandas GroupBy 中计算分组统计数据(计数、平均值等)?

如何在 Pandas GroupBy 中计算分组统计数据(计数、平均值等)?

Barbara Streisand
发布: 2024-12-28 04:36:10
原创
537 人浏览过

How to Calculate Group-wise Statistics (Count, Mean, etc.) in Pandas GroupBy?

使用 Pandas GroupBy 获取每个组的统计数据(计数、平均值等)

问题:

你有一个Pandas 中的 DataFrame df 并希望计算分组统计数据,例如多个数据的平均值、计数等

快速解答:

要获取每个组的行数,只需调用 .size(),它会返回一个系列:

df.groupby(['col1','col2']).size()
登录后复制

对于以计数为列的 DataFrame 结果,使用:

df.groupby(['col1', 'col2']).size().reset_index(name='counts')
登录后复制
登录后复制

详细示例:

考虑 DataFrame df:

  col1 col2  col3  col4  col5  col6
0    A    B  0.20 -0.61 -0.49  1.49
1    A    B -1.53 -1.01 -0.39  1.82
2    A    B -0.44  0.27  0.72  0.11
3    A    B  0.28 -1.32  0.38  0.18
4    C    D  0.12  0.59  0.81  0.66
5    C    D -0.13 -1.65 -1.64  0.50
6    C    D -1.42 -0.11 -0.18 -0.44
7    E    F -0.00  1.42 -0.26  1.17
8    E    F  0.91 -0.47  1.35 -0.34
9    G    H  1.48 -0.63 -1.14  0.17
登录后复制

获取行计数:

df.groupby(['col1', 'col2']).size()
登录后复制

输出:

col1  col2
A     B       4
C     D       3
E     F       2
G     H       1
dtype: int64
登录后复制

使用以下命令创建 DataFrame计数:

df.groupby(['col1', 'col2']).size().reset_index(name='counts')
登录后复制
登录后复制

输出:

  col1 col2  counts
0    A    B       4
1    C    D       3
2    E    F       2
3    G    H       1
登录后复制

包括更多统计结果:

要计算平均值等其他统计数据,中位数和最小值,使用agg():

(df
.groupby(['col1', 'col2'])
.agg({
    'col3': ['mean', 'count'],
    'col4': ['median', 'min', 'count']
}))
登录后复制

输出:

            col4                  col3      
          median   min count      mean count
col1 col2                                   
A    B    -0.810 -1.32     4 -0.372500     4
C    D    -0.110 -1.65     3 -0.476667     3
E    F     0.475 -0.47     2  0.455000     2
G    H    -0.630 -0.63     1  1.480000     1
登录后复制

将统计数据拆分为单独的聚合:

要对输出进行更多控制,请拆分统计数据并将它们结合起来使用加入:

gb = df.groupby(['col1', 'col2'])
counts = gb.size().to_frame(name='counts')
(counts
 .join(gb.agg({'col3': 'mean'}).rename(columns={'col3': 'col3_mean'}))
 .join(gb.agg({'col4': 'median'}).rename(columns={'col4': 'col4_median'}))
 .join(gb.agg({'col4': 'min'}).rename(columns={'col4': 'col4_min'}))
 .reset_index()
)
登录后复制

输出:

  col1 col2  counts  col3_mean  col4_median  col4_min
0    A    B       4  -0.372500       -0.810     -1.32
1    C    D       3  -0.476667       -0.110     -1.65
2    E    F       2   0.455000        0.475     -0.47
3    G    H       1   1.480000       -0.630     -0.63
登录后复制

以上是如何在 Pandas GroupBy 中计算分组统计数据(计数、平均值等)?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板