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多重继承实例
Oct 11 Python
Perl中著名的Schwartzian转换问题解决实现
Jun 02 Python
Python3 max()函数基础用法
Feb 19 Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 Python
在自动化中用python实现键盘操作的方法详解
Jul 19 Python
python manage.py runserver流程解析
Nov 08 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 Python
python定义类self用法实例解析
Jan 22 Python
python实现简单井字棋小游戏
Mar 05 Python
基于python检查SSL证书到期情况代码实例
Apr 04 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 Python
手残删除python之后的补救方法
Jun 26 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
Zend Studio使用技巧两则
2016/04/01 PHP
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
JS实现AES加密并与PHP互通的方法分析
2017/04/19 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
办公室驾驶员岗位职责
2013/11/15 职场文书
结婚喜宴主持词
2014/03/14 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
家庭贫困证明
2015/06/16 职场文书
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电