Pandas GroupBy用法详解
在Python中,pandas库是一种强大的数据处理和分析工具,它提供了许多用于数据操作和分析的方法。其中,groupby
是pandas库中一个非常重要的功能,它可以帮助我们对数据进行分组和聚合运算。本文将详细介绍groupby
的用法,并通过实际案例帮助大家更好地理解和掌握这一功能。
groupby基础用法
groupby
的基本用法是将数据按照某个或多个字段进行分组,然后对每个分组应用一个函数。其基本语法如下:
df.groupby(by=['column1', 'column2'])
其中,df
表示需要处理的DataFrame,by
参数用于指定分组的列名。
例如,我们有一个包含学生信息的DataFrame,如下所示:
df = pd.DataFrame({
'姓名': ['张三', '李四', '王五', '赵六', '孙七'],
'班级': ['一班', '二班', '三班', '一班', '二班'],
'成绩': [80, 90, 70, 85, 92]
})
如果我们想按照班级对学生进行分组并计算每个班级的平均成绩,可以使用以下代码:
average_score = df.groupby('班级')['成绩'].mean()
print(average_score)
输出结果:
班级
一班 82.5
二班 91.0
三班 70.0
Name: 成绩, dtype: float64
在这个例子中,我们首先使用groupby
函数按照’班级’列对数据进行分组,然后使用mean
函数计算每个分组的平均成绩。
groupby进阶用法
除了基本的分组和聚合运算外,groupby
还有许多其他高级用法。
多级分组
groupby
支持多级分组,即根据多个字段对数据进行分组。其基本语法如下:
df.groupby([['column1', 'column2'], ['column3', 'column4']])
例如,我们有一个包含学生信息和课程信息的DataFrame,如下所示:
df = pd.DataFrame({
'姓名': ['张三', '李四', '王五', '赵六', '孙七'],
'班级': ['一班', '二班', '三班', '一班', '二班'],
'课程': ['数学', '英语', '语文', '数学', '英语'],
'成绩': [80, 90, 70, 85, 92]
})
如果我们想按照班级和课程对学生进行分组并计算每个班级每门课程的平均成绩,可以使用以下代码:
average_score = df.groupby(['班级', '课程'])['成绩'].mean()
print(average_score)
输出结果:
班级 课程
一班 英语 85.0
数学 82.5
二班 英语 91.0
数学 90.0
Name: 成绩, dtype: float64
在这个例子中,我们首先使用groupby
函数按照’班级’和’课程’列对数据进行多级分组,然后使用mean
函数计算每个分组的平均成绩。
分组运算
groupby
还支持在分组上应用各种运算,如求和、最大值、最小值等。这些运算可以通过agg
函数实现。其基本语法如下:
df.groupby('column1')['column2'].agg([func1, func2, ...])
例如,我们有一个包含商品销售信息的DataFrame,如下所示:
df = pd.DataFrame({
'商品': ['商品A', '商品B', '商品C', '商品D', '商品E'],
'销售额': [100, 200, 150, 80, 120