Python中分组函数groupby和分组运算函数agg的使用
在使用Python进行数据分析时,经常需要对数据进行分组并计算各组数据的汇总统计量。Python中的pandas库提供了方便实用的groupby和agg函数来完成数据分组和聚合运算。
groupby函数的使用
groupby函数可以根据指定的列名对数据进行分组操作,并返回一个GroupBy对象。GroupBy对象包含多个属性和方法,用于对分组数据进行处理和分析。
基本语法
grouped = df.groupby('column_name')
例子1:使用groupby函数对数据进行分组
我们有一个包含了学生姓名、科目、成绩的数据表:
姓名 | 科目 | 成绩 |
---|---|---|
小明 | 语文 | 86 |
小红 | 数学 | 92 |
小明 | 数学 | 88 |
小红 | 语文 | 90 |
小明 | 英语 | 94 |
我们可以使用groupby函数,对学生姓名进行分组:
import pandas as pd
df = pd.DataFrame({
'name': ['小明', '小红', '小明', '小红', '小明'],
'subject': ['语文', '数学', '数学', '语文', '英语'],
'grade': [86, 92, 88, 90, 94]
})
grouped = df.groupby('name')
这样就得到了一个GroupBy对象,我们可以通过GroupBy对象中的方法,对数据进行各种操作,比如计算每个学生的平均成绩。
avg_grades = grouped['grade'].mean()
print(avg_grades)
输出结果为:
name
小明 89.33
小红 91.00
Name: grade, dtype: float64
这里我们计算了每个学生的平均成绩。
例子2:使用多列进行分组
如果我们想要使用多列来进行分组,只需要在groupby函数中传入多个列名即可。
grouped = df.groupby(['name', 'subject'])
这样就可以按照学生姓名和科目进行数据分组。
agg函数的使用
agg函数可以对GroupBy对象中的每个组应用指定的聚合函数,并将结果合并为一个DataFrame。
基本语法
grouped.agg(func)
其中,func可以是一个函数名,也可以是一个函数列表。
例子3:使用agg函数对数据进行聚合
我们还是沿用前面的例子,想要计算每个学生每个科目的最高分和最低分。
grouped = df.groupby(['name', 'subject'])
result = grouped.agg(['min', 'max'])['grade']
print(result)
输出结果如下:
min max
name subject
小明 英语 94 94
数学 88 88
语文 86 86
小红 数学 92 92
语文 90 90
这里我们使用了agg函数,并传入了两个聚合函数min和max,然后把结果存到result这个DataFrame中。
例子4:自定义聚合函数
如果我们需要对数据进行更复杂的运算,可以使用自定义函数进行聚合操作。
import numpy as np
def sum_of_squares(arr):
return np.sum(np.square(arr))
grouped = df.groupby('name')
result = grouped.agg({'grade': sum_of_squares})
print(result)
输出结果如下:
grade
name
小明 24242
小红 16400
这里我们定义了一个自定义函数sum_of_squares,然后对每个学生的成绩进行平方和的计算。使用agg函数和字典的形式,使用聚合函数的名称作为字典的key,然后把自定义函数作为值传给字典,就可以使用自定义函数进行聚合操作了。
总结
groupby和agg函数是Python进行数据分析非常重要的两个函数,使用这两个函数,我们可以方便地对数据进行分组和聚合,并得到各种汇总统计量。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中分组函数groupby和分组运算函数agg的使用 - Python技术站