本文结合一个简单的案例来讲解Pandas中高级函数transform的使用。
官网的案例比较简单,具体地址:
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.transform.html
模拟数据
模拟了这样一份虚拟数据:姓名+科目+分数
1 | df_copy = df.copy() # 生成一个副本待用 |
需求很简单:求出每个学生的各科成绩在个人总成绩中的占比?
方法1:groupby+merge
步骤1:求出每个人的总成绩
步骤2:使用merge拼接数据
Merge合并数据的时候使用全连接,保留两个DataFrame的全部字段
求出百分比
求出占比,并且转成百分比的形式:
方法2:groupby+transform
步骤1:直接使用transform
一步到位,直接求出每个学生的总成绩👍这个就是tranform的神器之处。不用中间转换过程
步骤2:求出百分比
后面是同样的过程和方法求出百分比
活学活用transform
除了求和sum,transform的应用还很灵活:
使用其他内置聚合函数
1 | df_copy["总成绩"] = df_copy.groupby("姓名")["分数"].transform(sum) |
同时多样化的聚合函数求解多个指标
使用自定义函数
使用lambda函数
使用其他内置函数
除了和数据相关的函数,还可以是其他的函数:
1、将名字改成小写
2、求名字的长度len
传入多个函数
对不同的字段传入不同的函数
筛选过滤数据
除了新增或者改变数据,transform还能够筛选满足要求的数据:
- 总分大于350分
- 科目的最低分为90分
备忘录
记住这张图,能够帮助你很好的理解transform函数的使用,建议收藏保存~