牛逼!一行代码让 pandas 的 apply 速度飙到极致!
来源:Python数据科学
作者:东哥起飞
文末赠送5本新书
《Python开发技术大全》
前几天,分享了一篇文章,是关于替代pandas的工具vaex。vaex利用了内存映射的原理,所以比pandas能快上几百倍,但是vaex目前功能有限,所以暂时pandas还是无法撼动的。
1. pandas提速的方法回顾
如果想要让pandas提速,东哥总结有两个方法:
1. 向量化
向量化是最优的方法,具体用法参考文章:还在抱怨pandas运行速度慢?这几个方法会颠覆你的看法。
举个例子,我们将向量化定义为使用Numpy表示整个数组而不是元素的计算。下面有两个数组:
array_1 = np.array([1,2,3,4,5])
array_2 = np.array([6,7,8,9,10])
我们希望创建一个新数组,该数组是两个数组的总和,结果应该是:
result = [7,9,11,13,15]
当然,我们也可以在Python中使用for循环将这些数组求和,但这非常慢。替代的是,Numpy允许我们直接在阵列上进行操作,这要快得多,尤其是大型阵列。
result = array_1 + array_2
2. 并行化
本次给大家分享一个神器 Swifter,可以自动让apply的运行速度达到最快,并且只需要一行代码!
2. Swifter介绍
import swifter
df.swifter.apply(lambda x: x.sum() - x.min())
文末赠书福利
赠送书籍《Python开发技术大全》5本,此书564页!由「机械工业出版社」赞助提供,如果等不及也可以入手一本学习。
介绍:本书从Python 语言的基础语法讲起,逐步深入地介绍了Python各种库,并且介绍了这些库的实战案例,重点介绍了爬虫开发, GUI应用程序开发,容器管理, Redis数据库操作以及数据处理和神经网络方面的内容。让读者不但可以系统地学习Python编程的相关知识,而且还能对Python在各个领域的应用有更为深入的理解。
用了这个jupyter插件,我已经半个月没打开过excel了
双系统的日子结束了:Windows 和 Linux 将合二为一