pandas groupby count

在数据处理和分析过程中,经常需要对数据进行分组统计,pandas中的groupby函数就是一个非常强大的工具。通过groupby函数可以方便地对数据进行分组并进行各种统计操作,其中包括计数操作。本文将详细介绍如何使用pandas中的groupby函数进行计数操作。
1. 准备数据
首先,我们需要准备一些数据用来进行分组统计。在本文中,我们将使用一个包含学生信息的DataFrame来演示groupby计数操作。下面是一个简单的示例数据:
import pandas as pd
data = {'学生姓名': ['张三', '李四', '张三', '王五', '李四'],
        '性别': ['男', '女', '男', '女', '男'],
        '年龄': [20, 21, 22, 20, 21]}
df = pd.DataFrame(data)
print(df)
运行上面的代码,我们可以得到以下输出:
  学生姓名 性别  年龄
0    张三  男  20
1    李四  女  21
2    张三  男  22
3    王五  女  20
4    李四  男  21
这个DataFrame包含了学生的姓名、性别和年龄信息。
2. 使用groupby进行计数
接下来,我们将利用groupby函数对数据进行分组并进行计数操作。通过groupby函数返回的对象,我们可以调用count()方法对每个分组中的元素进行计数。
count_result = df.groupby('学生姓名').count()
print(count_result)
运行以上代码,我们可以得到以下结果:
      性别  年龄
学生姓名        
张三     2    2
李四     2    2
王五     1    1
以上结果表明,在“学生姓名”这一列上进行了分组计数,张三和李四各有两个记录,王五有一个记录。
3. 按多列分组计数
除了可以按照单列进行分组计数外,我们还可以同时按照多列进行分组计数。下面是一个示例:
count_result_multi = df.groupby(['学生姓名', '性别']).count()
print(count_result_multi)
运行以上代码,我们可以得到以下结果:
         年龄
学生姓名 性别    
张三     男  2
李四     女  1
       男  1
王五     女  1
以上结果表明,我们同时按照“学生姓名”和“性别”这两列进行了分组计数,例如张三是男性有两个记录,李四有一个女性和一个男性记录,王五是女性有一个记录。
4. 使用agg函数自定义计数操作
除了count方法外,还可以使用agg函数来自定义计数操作,例如计算每个分组的平均年龄和人数。示例如下:
agg_result = df.groupby('学生姓名').agg({'年龄': 'mean', '性别': 'count'})
print(agg_result)
运行以上代码,我们可以得到以下结果:
            年龄  性别
学生姓名              
张三    21.00  2
李四    21.00  2
王五    20.00  1
以上结果表明,我们分别计算了每个分组的平均年龄和人数,例如张三的平均年龄为21岁,有2个记录。
结论
通过本文的介绍,可以看出pandas中的groupby函数非常强大,可以方便地进行分组统计操作。
 极客笔记
极客笔记