查看原文
其他

Pandas高级函数transform使用指南

尤而小屋 尤而小屋 2022-06-19

公众号:尤而小屋
作者: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函数的使用,建议收藏保存~

https://pbpython.com/pandas_transform.html



推荐阅读


机器学习神器Scikit-Learn保姆级入门教程

小而全的Pandas使用案例

Pandas行列转换的4大技巧!

精选23个Pandas常用函数

Plotly+Seaborn+Folium可视化探索爱彼迎租房数据

尤而小屋,一个温馨的小屋。小屋主人,一手代码谋求生存,一手掌勺享受生活,欢迎你的光临

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存