Fork me on GitHub

Pandas高级函数transform使用指南

本文结合一个简单的案例来讲解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
2
3
4
5
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

本文标题:Pandas高级函数transform使用指南

发布时间:2022年01月15日 - 21:01

原始链接:http://www.renpeter.cn/2022/01/15/Pandas%E9%AB%98%E7%BA%A7%E5%87%BD%E6%95%B0transform%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea