Python学习笔记:pandas之transform
一、介绍
利用 transform
可以高效地汇总数据,直白的说:增加一列汇总列。
一般情况下,transform
与 groupby
组合使用。
使用语法:
Series.transform(func, axis=0, **kwargs)
二、实操
- 基础用法
import pandas as pd
import numpy as np
df = pd.DataFrame({'A':range(3),
'B':range(1,4)})
df
'''
A B
0 0 1
1 1 2
2 2 3
'''
# 整体 +1
df.transform(lambda x: x+1)
s = pd.Series(range(3))
s.transform([np.sqrt, np.exp])
'''
sqrt exp
0 0.000000 1.000000
1 1.000000 2.718282
2 1.414214 7.389056
'''
- 分组变换
input
→ split
→ apply(sum)
→ combine
df = pd.DataFrame({
"Date": [
"2015-05-08", "2015-05-07", "2015-05-06", "2015-05-05",
"2015-05-08", "2015-05-07", "2015-05-06", "2015-05-05"],
"Data": [5, 8, 6, 1, 50, 100, 60, 120],
})
df['sum'] = df.groupby('Date')['Data'].transform(sum)
df['size'] = df.groupby('Date')['Data'].transform(len)
df
'''
Date Data sum size
0 2015-05-08 5 55 2
1 2015-05-07 8 108 2
2 2015-05-06 6 66 2
3 2015-05-05 1 121 2
4 2015-05-08 50 55 2
5 2015-05-07 100 108 2
6 2015-05-06 60 66 2
7 2015-05-05 120 121 2
'''
不使用 transform
方法进行变换。
temp = df.groupby('Date')['Data'].sum().rename('Total').reset_index()
df_2 = pd.merge(df, temp, how='left')
df_2['percent'] = df_2['Data']/df_2['Total']
'''
Date Data sum size Total percent
0 2015-05-08 5 55 2 55 0.090909
1 2015-05-07 8 108 2 108 0.074074
2 2015-05-06 6 66 2 66 0.090909
3 2015-05-05 1 121 2 121 0.008264
4 2015-05-08 50 55 2 55 0.909091
5 2015-05-07 100 108 2 108 0.925926
6 2015-05-06 60 66 2 66 0.909091
7 2015-05-05 120 121 2 121 0.991736
'''
三、apply 和 transform 结合对比
在与 apply()
一起使用时,transform
需要进行去重操作,一般是通过指定一或多个列完成。
此外,匿名函数永远不是一个很好的办法,在进行简单计算时,无论是使用 transfrom
、agg
还是 apply
,都要尽可能使用自带方法!!!
apply
方法可以结合 joblib
多线程、多进程模块构造相应的函数执行计算,加快计算速度。
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)