技术文摘
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 方法为分组聚合操作提供了丰富的选择,使我们能够根据具体的数据分析需求灵活运用。熟练掌握这些方法,可以大大提高数据处理和分析的效率和准确性。无论是处理小型数据集还是大规模的数据,这些功能强大的方法都能助您一臂之力,让您从复杂的数据中快速提取有价值的信息。
- 1.5 万字 CSS 基础要点与常见需求汇总
- Vite2+TypeScript4+Vue3 技术栈下的项目开发入手之道
- 你的线程或存在安全性、活跃性与性能问题
- Python 迭代知识全解析,一篇文章就够
- 2021 年 JavaScript 发展态势
- 数组 Reduce 构建 Map 等 12 个函数的实现
- 十种值得推荐的 PHP 测试框架
- LeetCode 中重建二叉树题解
- Swagger 强大助力:Knife4j!助您轻松达成接口搜索、Word 下载、接口过滤...
- Kafka 性能篇:Kafka 缘何如此“快”
- Java 中的异步编程应用
- HarmonyOS APP 组件分享之三
- Java 编程核心:数据结构与算法之线索化二叉树
- Java 基础中的 System 类与 Static 方法
- Godot 引擎推出 Web 版 能在浏览器运行的游戏引擎上线