牛逼!一行代碼讓 pandas 的 apply 速度飆到極致!

來(lái)源:Python數(shù)據(jù)科學(xué)
作者:東哥起飛
前幾天,分享了一篇文章,是關(guān)于替代pandas的工具vaex。vaex利用了內(nèi)存映射的原理,所以比pandas能快上幾百倍,但是vaex目前功能有限,所以暫時(shí)pandas還是無(wú)法撼動(dòng)的。
1.?pandas提速的方法回顧
如果想要讓pandas提速,東哥總結(jié)有兩個(gè)方法:
1.?向量化
向量化是最優(yōu)的方法,具體用法參考文章:還在抱怨pandas運(yùn)行速度慢?這幾個(gè)方法會(huì)顛覆你的看法。
舉個(gè)例子,我們將向量化定義為使用Numpy表示整個(gè)數(shù)組而不是元素的計(jì)算。下面有兩個(gè)數(shù)組:
array_1?=?np.array([1,2,3,4,5])
array_2?=?np.array([6,7,8,9,10])
我們希望創(chuàng)建一個(gè)新數(shù)組,該數(shù)組是兩個(gè)數(shù)組的總和,結(jié)果應(yīng)該是:
result?=?[7,9,11,13,15]
當(dāng)然,我們也可以在Python中使用for循環(huán)將這些數(shù)組求和,但這非常慢。替代的是,Numpy允許我們直接在陣列上進(jìn)行操作,這要快得多,尤其是大型陣列。
result?=?array_1?+?array_2
2. 并行化
本次給大家分享一個(gè)神器?Swifter,可以自動(dòng)讓apply的運(yùn)行速度達(dá)到最快,并且只需要一行代碼!
2. Swifter介紹

import?pandas?as?pd
import?swifter
df.swifter.apply(lambda?x:?x.sum()?-?x.min())
求個(gè)三連
評(píng)論
圖片
表情

