技术文摘
pandas 分组聚合的 agg、transform 和 apply 方法
2024-12-28 22:36:54 小编
在数据分析领域,pandas 是一个强大且广泛使用的 Python 库。其中,分组聚合操作是数据分析中的常见任务,而 agg、transform 和 apply 方法则为我们提供了灵活且高效的处理方式。
agg 方法用于对分组数据进行聚合计算。它可以接受一个函数列表,对每个列应用指定的聚合函数,如求和、平均值、最大值、最小值等。例如,我们想要计算每个班级学生成绩的平均分,可以这样使用 agg 方法:
import pandas as pd
data = {'Class': ['A', 'A', 'B', 'B'], 'Score': [80, 90, 70, 85]}
df = pd.DataFrame(data)
average_scores = df.groupby('Class')['Score'].agg('mean')
transform 方法与 agg 方法有所不同。它对每个分组进行操作,并返回与原始数据长度相同的结果。这在需要为每个原始数据点分配基于分组的计算值时非常有用。比如,我们要为每个学生的成绩减去所在班级的平均成绩:
def subtract_mean(group):
return group - group.mean()
adjusted_scores = df.groupby('Class')['Score'].transform(subtract_mean)
apply 方法则更为通用,它可以接受自定义函数,函数可以处理整个分组的数据帧。这使得我们能够执行复杂的逻辑和计算。假设我们要找出每个班级成绩最高和最低的学生姓名:
def find_extremes(group):
max_score = group.max()
min_score = group.min()
max_student = group[group['Score'] == max_score].iloc[0]['StudentName']
min_student = group[group['Score'] == min_score].iloc[0]['StudentName']
return pd.Series({'MaxStudent': max_student, 'MinStudent': min_student})
extreme_students = df.groupby('Class').apply(find_extremes)
pandas 的 agg、transform 和 apply 方法为分组聚合操作提供了丰富的选择,使我们能够根据具体的数据分析需求灵活运用。熟练掌握这些方法,可以大大提高数据处理和分析的效率和准确性。无论是处理小型数据集还是大规模的数据,这些功能强大的方法都能助您一臂之力,让您从复杂的数据中快速提取有价值的信息。