大家好,本文结合一个简单的案例来讲解Pandas中高级函数transform的使用。
官网的案例比较简单,具体地址:
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.transform.html
模拟了这样一份虚拟数据:姓名+科目+分数
df_copy = df.copy() # 生成一个副本待用
需求很简单:求出每个学生的各科成绩在个人总成绩中的占比?
Merge合并数据的时候使用全连接,保留两个DataFrame的全部字段
求出占比,并且转成百分比的形式:
一步到位,直接求出每个学生的总成绩这个就是tranform的神奇之处。不用中间转换过程
后面是同样的过程和方法求出百分比
除了求和sum,transform的应用还很灵活:
df_copy['总成绩'] = df_copy.groupby('姓名')['分数'].transform(sum)df_copy['平均成绩'] = df_copy.groupby('姓名')['分数'].transform(np.mean) # 不能直接meandf_copy['最高分'] = df_copy.groupby('姓名')['分数'].transform(max)df_copy['最低分'] = df_copy.groupby('姓名')['分数'].transform(min)df_copy.head() # 显示5行
同时使用多样化的聚合函数求解多个指标
除了和数据相关的函数,还可以是其他的函数:
1、将名字改成小写
2、求名字的长度len
对不同的字段传入不同的函数
除了新增或者改变数据,transform还能够筛选满足要求的数据:
记住这张图,能够帮助你很好地理解transform函数的使用,建议收藏保存~
原文链接:
https://mp.weixin.qq.com/s/nkC8qUc3mIXXJ1GF0FLs1w
联系客服