其他
Pandas高级函数transform使用指南
公众号:尤而小屋
作者:Peter
编辑:Peter
大家好,我是Peter~
本文结合一个简单的案例来讲解Pandas中高级函数transform的使用。
官网的案例比较简单,具体地址:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.transform.html
模拟数据
模拟了这样一份虚拟数据:姓名+科目+分数
df_copy = df.copy() # 生成一个副本待用
需求很简单:求出每个学生的各科成绩在个人总成绩中的占比?
方法1:groupby+merge
步骤1:求出每个人的总成绩
步骤2:使用merge拼接数据
Merge合并数据的时候使用全连接,保留两个DataFrame的全部字段
求出百分比
求出占比,并且转成百分比的形式:
方法2:groupby+transform
步骤1:直接使用transform
一步到位,直接求出每个学生的总成绩👍这个就是tranform的神器之处。不用中间转换过程
步骤2:求出百分比
后面是同样的过程和方法求出百分比
活学活用transform
除了求和sum,transform的应用还很灵活:
使用其他内置聚合函数
df_copy["总成绩"] = df_copy.groupby("姓名")["分数"].transform(sum)
df_copy["平均成绩"] = df_copy.groupby("姓名")["分数"].transform(np.mean) # 不能直接mean
df_copy["最高分"] = df_copy.groupby("姓名")["分数"].transform(max)
df_copy["最低分"] = df_copy.groupby("姓名")["分数"].transform(min)
df_copy.head() # 显示5行
同时使用多样化的聚合函数求解多个指标
使用自定义函数
使用lambda函数
使用其他内置函数
除了和数据相关的函数,还可以是其他的函数:
1、将名字改成小写
2、求名字的长度len
传入多个函数
对不同的字段传入不同的函数
筛选过滤数据
除了新增或者改变数据,transform还能够筛选满足要求的数据:
总分大于350分 科目的最低分为90分
备忘录
记住这张图,能够帮助你很好的理解transform函数的使用,建议收藏保存~
推荐阅读
Plotly+Seaborn+Folium可视化探索爱彼迎租房数据
尤而小屋,一个温馨的小屋。小屋主人,一手代码谋求生存,一手掌勺享受生活,欢迎你的光临