知行编程网知行编程网  2022-04-15 01:00 知行编程网 隐藏边栏 |   抢沙发  11 
文章评分 0 次,平均分 0.0
 



阅读本文大概需要4.5分钟


Pandas是Python中用于数据处理与分析的屠龙刀,想必大家也都不陌生,但Pandas在使用上有一些技巧和需要注意的地方,尤其是对于较大的数据集而言,如果你没有适当地使用,那么可能会导致Pandas的运行速度非常慢。


对于程序猿/媛而言,时间就是生命,这篇文章给大家总结了一些pandas常见的性能优化方法,希望能对你有所帮助!

 一、数据读取的优化


读取数据是进行数据分析前的一个必经环节,pandas中也内置了许多数据读取的函数,最常见的就是用pd.read_csv()函数从csv文件读取数据,那不同格式的文件读取起来有什么区别呢?哪种方式速度更快呢?我们做个实验对比一下。


这里采用的数据共59万行,分别保存为xlsx、csv、hdf以及pkl格式,每种格式进行10次读取测试,得到下面的结果。


一文带你掌握常见的Pandas性能优化方法,让你的pandas飞起来!


可以看到,对同一份数据,pkl格式的数据的读取速度最快,是读取csv格式数据的近6倍,其次是hdf格式的数据,速度最惨不忍睹的是读取xlsx格式的数据(这仅仅是一份只有15M左右大小的数据集呀)。


所以对于日常的数据集(大多为csv格式),可以先用pandas读入,然后将数据转存为pkl或者hdf格式,之后每次读取数据时候,便可以节省一些时间。代码如下:



 二、进行聚合操作时的优化


在使用 agg 和 transform 进行操作时,尽量使用Python的内置函数,能够提高运行效率。(数据用的还是上面的测试用例)


1、agg+Python内置函数


一文带你掌握常见的Pandas性能优化方法,让你的pandas飞起来!


2、agg+非内置函数


一文带你掌握常见的Pandas性能优化方法,让你的pandas飞起来!

可以看到对 agg 方法,使用内置函数时运行效率提升了60%。


3、transform+Python内置函数


一文带你掌握常见的Pandas性能优化方法,让你的pandas飞起来!


4、transform+非内置函数


一文带你掌握常见的Pandas性能优化方法,让你的pandas飞起来!

 transform 方法而言,使用内置函数时运行效率提升了两倍。


 三、对数据进行逐行操作时的优化


假设我们现在有这样一个电力消耗数据集,以及对应时段的电费价格,如下图所示:


一文带你掌握常见的Pandas性能优化方法,让你的pandas飞起来!


一文带你掌握常见的Pandas性能优化方法,让你的pandas飞起来!


数据集记录着每小时的电力消耗,如第一行代表2001年1月13日零点消耗了0.586kwh的电。不同使用时段的电费价格不一样,我们现在的目的是求出总的电费,那么就需要将对应时段的单位电费×消耗电量。下面给出了三种写法,我们分别测试这三种处理方式,对比一下这三种写法有什么不同,代码效率上有什么差异。



测试结果:


一文带你掌握常见的Pandas性能优化方法,让你的pandas飞起来!


可以看到,采用 isin() 筛选出对应数据后分开计算的速度是简单循环的近606倍,这并不是说 isin() 有多厉害,方法三速度快是因为它采用了向量化的数据处理方式(这里的isin() 是其中一种方式,还有其他方式,大家可以尝试一下) ,这才是重点。什么意思呢?


这里简单画了个图,大家可以结合这个图和代码好好体会是一个一个处理快,还是把能进行相同操作的分开然后批量处理快。


一文带你掌握常见的Pandas性能优化方法,让你的pandas飞起来!


 四、使用numba进行加速


如果在你的数据处理过程涉及到了大量的数值计算,那么使用numba可以大大加快代码的运行效率,numba使用起来也很简单,下面给大家演示一下。(代码处理不具有实际意义,只是展示一下效果)


首先需要安装numba模块



我们用一个简单的例子测试一下numba的提速效果



一文带你掌握常见的Pandas性能优化方法,让你的pandas飞起来!


从测试结果来看,再次凸显出向量化处理的优势,同时numba对原本速度已经很快的向量化处理也能提高一倍多的效率。更多numba的使用方法请参考numba的使用文档。


参考资料:

1、https://pandas.pydata.org/pandasdocs/stable/user_guide/enhancingperf.html

2、https://realpython.com/fast-flexible-pandas/

3、https://www.cnblogs.com/wkang/p/9794678.html

                

更多有趣有用文章

自动编写Python程序的神器,Python 之父都发声力挺!

史上最全的用Python操控手机APP攻略!建议收藏!

还在撸Python3.7,Python3.9新鲜出炉,菜鸟哥带你尝鲜解读


Python心得和技巧:

零基础学了8个月的Python,到底有啥感悟

我珍藏的一些好的Python代码,技巧

菜鸟写Python程序,如何从新手变老手

菜鸟必收藏,13个Python惯用小技巧

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享