pandas中apply和transform方法的性能比较及区别介绍


Posted in Python onOctober 30, 2018

1. apply与transform

首先讲一下apply() 与transform()的相同点与不同点

相同点:

都能针对dataframe完成特征的计算,并且常常与groupby()方法一起使用。

不同点:

apply()里面可以跟自定义的函数,包括简单的求和函数以及复杂的特征间的差值函数等(注:apply不能直接使用agg()方法 / transform()中的python内置函数,例如sum、max、min、'count‘等方法)

transform() 里面不能跟自定义的特征交互函数,因为transform是真针对每一元素(即每一列特征操作)进行计算,也就是说在使用 transform() 方法时,需要记得三点:

1、它只能对每一列进行计算,所以在groupby()之后,.transform()之前是要指定要操作的列,这点也与apply有很大的不同。

2、由于是只能对每一列计算,所以方法的通用性相比apply()就局限了很多,例如只能求列的最大/最小/均值/方差/分箱等操作

3、transform还有什么用呢?最简单的情况是试图将函数的结果分配回原始的dataframe。也就是说返回的shape是(len(df),1)。注:如果与groupby()方法联合使用,需要对值进行去重

2. 各方法耗时

分别计算在同样简单需求下各组合方法的计算时长

2.1 transform() 方法+自定义函数

pandas中apply和transform方法的性能比较及区别介绍

2.2 transform() 方法+python内置方法

pandas中apply和transform方法的性能比较及区别介绍

2.3 apply() 方法+自定义函数

pandas中apply和transform方法的性能比较及区别介绍

2.4 agg() 方法+自定义函数

pandas中apply和transform方法的性能比较及区别介绍

2.5 agg() 方法+python内置方法

pandas中apply和transform方法的性能比较及区别介绍

2.6 结论

agg()+python内置方法的计算速度最快,其次是transform()+python内置方法。而 transform() 方法+自定义函数 的组合方法最慢,需要避免使用!

而下面两图中红框内容可观察发现:python自带的stats统计模块在pandas结构中的计算也非常慢,也需要避免使用!

pandas中apply和transform方法的性能比较及区别介绍

pandas中apply和transform方法的性能比较及区别介绍

3. 实例分析

需求:计算每个用户每天

某种行为消费次数、消费总额、消费均额、消费最大额、消费最小额

在几个终端支付、最常支付终端号、最常支付终端号的支付次数、最少支付终端号、最少支付终端号的支付次数

某种行为最常消费发生时间段、最常消费发生时间段的消费次数、最少消费发生时间段、最少消费发生时间段的消费次数

某种行为最早消费时间、最晚消费时间

原始数据信息:306626 x 9

pandas中apply和transform方法的性能比较及区别介绍

具体选择哪种方法处理,根据实际情况确定,在面对复杂计算时,transform() 与apply()结合使用往往会有意想不到的效果!

需要注意的是,在与apply()一起使用时,transform需要进行去重操作,一般是通过指定一或多个列完成。

此外,匿名函数永远不是一个很好的办法,在进行简单计算时,无论是使用transfrom、agg还是apply,都要尽可能使用自带方法!!!

4. 小技巧

在使用apply()方法处理大数据级时,可以考虑使用joblib中的多线程/多进程模块构造相应函数执行计算,以下分别是采用多进程和单进程的耗时时长。

可以看到,在260W的数据集上,多进程比单进程的计算速度可以提升约17%~61%  。

pandas中apply和transform方法的性能比较及区别介绍

总结

以上所述是小编给大家介绍的pandas中apply和transform方法的性能比较,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python中logging库的使用总结
Oct 18 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
python3.4实现邮件发送功能
May 28 Python
Python txt文件加入字典并查询的方法
Jan 15 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
Feb 21 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
Jul 23 Python
Python3 JSON编码解码方法详解
Sep 06 Python
如何通过python实现人脸识别验证
Jan 17 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
Feb 03 Python
Python openpyxl 插入折线图实例
Apr 17 Python
python批量修改交换机密码的示例
Sep 22 Python
Python实现信息轰炸工具(再也不怕说不过别人了)
Jun 11 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 #Python
python 判断参数为Nonetype类型或空的实例
Oct 30 #Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 #Python
python2与python3中关于对NaN类型数据的判断和转换方法
Oct 30 #Python
numpy 对矩阵中Nan的处理:采用平均值的方法
Oct 30 #Python
Python Numpy:找到list中的np.nan值方法
Oct 30 #Python
pandas 条件搜索返回列表的方法
Oct 30 #Python
You might like
php根据用户语言跳转相应网页
2015/11/04 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
js的闭包的一个示例说明
2008/11/18 Javascript
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
如何编写jquery插件
2017/03/29 jQuery
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
JS正则表达式验证密码强度
2020/03/18 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
解析Python编程中的包结构
2015/10/25 Python
Python编程实现正则删除命令功能
2017/08/30 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
MIKI HOUSE美国官方网上商店:日本领先的婴儿和儿童高级时装品牌
2020/06/21 全球购物
Linux文件操作命令都有哪些
2015/02/27 面试题
会计专业毕业生自我鉴定
2013/10/29 职场文书
销售部主管岗位职责
2013/12/18 职场文书
积极分子思想汇报
2014/01/04 职场文书
服务承诺书怎么写
2014/05/24 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
作文批改评语
2014/12/25 职场文书
CSS的calc函数用法小结
2022/06/25 HTML / CSS