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多线程抓取天涯帖子内容示例
Apr 03 Python
python实现根据图标提取分类应用程序实例
Sep 28 Python
数据挖掘之Apriori算法详解和Python实现代码分享
Nov 07 Python
Python标准库之sqlite3使用实例
Nov 25 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 Python
Python如何获取文件指定行的内容
May 27 Python
python实现三种随机请求头方式
Jan 05 Python
Python超简单容易上手的画图工具库推荐
May 10 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 超链接 抓取实现代码
2009/06/29 PHP
ThinkPHP之getField详解
2014/06/20 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
由浅入深剖析Angular表单验证
2016/07/14 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
vuex实现购物车功能
2020/06/28 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python实现简单日期工具类
2019/04/24 Python
Django模板语言 Tags使用详解
2019/09/09 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
请介绍一下Ant
2016/07/22 面试题
高中毕业的自我鉴定
2013/12/09 职场文书
更夫岗位责任制
2014/02/11 职场文书
房产公证书样本
2015/01/23 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
海上钢琴师观后感
2015/06/03 职场文书