groupby()
函数是 Pandas 中用于分组数据的函数,它允许你根据指定的列对数据进行分组,然后对每个分组应用聚合函数。以下是一些 groupby()
函数的用法示例:
假设我们有一个包含学生姓名、班级和成绩的 DataFrame:
import pandas as pd
# 创建 DataFrame
data = { '姓名': ['小明', '小红', '小明', '小红', '小明', '小红', '小明'],
'班级': ['A', 'A', 'B', 'B', 'A', 'B', 'B'],
'成绩': [80, 90, 85, 88, 92, 95, 89]}
df = pd.DataFrame(data)
基本用法:
# 按班级分组
grouped = df.groupby('班级')
这会将 DataFrame 按照班级进行分组。
对分组进行聚合操作:
# 计算每个班级的平均成绩
average_score = grouped['成绩'].mean()
print(average_score)
这会计算每个班级的平均成绩。
同时应用多个聚合函数:
# 计算每个班级的平均成绩和总成绩
agg_result = grouped['成绩'].agg(['mean', 'sum'])
print(agg_result)
这会计算每个班级的平均成绩和总成绩。
按多列分组:
# 按照班级和姓名分组,计算平均成绩
grouped_multi = df.groupby(['班级', '姓名'])
average_score_multi = grouped_multi['成绩'].mean()
print(average_score_multi)
这会按照班级和姓名两列进行分组,并计算每个分组的平均成绩。
自定义聚合函数:
# 定义自定义聚合函数,计算成绩的极差
def range_score(x):
return x.max() - x.min()
# 按班级分组,应用自定义聚合函数
range_result = grouped['成绩'].agg(range_score)
print(range_result)
这会按班级分组,并应用自定义的聚合函数计算每个班级成绩的极差。
这些示例展示了 groupby()
函数的常见用法,可以根据实际需求选择不同的聚合函数来对数据进行分组分析。