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 09 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
python字符串与url编码的转换实例
May 10 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
Dec 05 Python
Pycharm中Python环境配置常见问题解析
Jan 16 Python
python实现对变位词的判断方法
Apr 05 Python
浅谈Python中threading join和setDaemon用法及区别说明
May 02 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 Python
python help函数实例用法
Dec 06 Python
python中的对数log函数表示及用法
Dec 09 Python
pytest进阶教程之fixture函数详解
Mar 29 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漏洞小结
2012/02/05 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
详解Vue串联过滤器的使用场景
2020/04/30 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
Vue 修改网站图标的方法
2020/12/31 Vue.js
Python实现的百度站长自动URL提交小工具
2014/06/27 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
python 批量修改/替换数据的实例
2018/07/25 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
销售总监工作职责
2013/11/21 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
校园元旦活动总结
2014/07/09 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
党小组考察意见
2015/06/02 职场文书
人民币符号
2022/02/17 杂记