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 方法为分组聚合操作提供了丰富的选择,使我们能够根据具体的数据分析需求灵活运用。熟练掌握这些方法,可以大大提高数据处理和分析的效率和准确性。无论是处理小型数据集还是大规模的数据,这些功能强大的方法都能助您一臂之力,让您从复杂的数据中快速提取有价值的信息。

TAGS: pandas 数据处理 pandas 分组聚合 pandas 方法比较 pandas 函数应用

欢迎使用万千站长工具!

Welcome to www.zzTool.com