pandas100個(gè)騷操作:逆天!一行代碼讓 apply 速度飆到極致

來源:Python數(shù)據(jù)科學(xué)
作者:東哥起飛
大家好,我是東哥。
本篇介紹一行代碼讓 pandas 的 apply 速度飆到極致!
如果想要讓pandas提速,東哥總結(jié)有兩個(gè)方法:
1. 向量化
向量化是最優(yōu)的方法,具體用法參考文章:pandas100個(gè)騷操作:再見 for 循環(huán)!速度提升315倍!
舉個(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. 并行化
dask。pandas使用比較多的一個(gè)功能就是apply功能,使用自帶函數(shù)或者自己寫個(gè)函數(shù),可以直接對(duì)dataframe進(jìn)行變換,非常香!本次給大家分享一個(gè)神器 Swifter,可以自動(dòng)讓apply的運(yùn)行速度達(dá)到最快,并且只需要一行代碼!
Swifter是這樣做的。Dask進(jìn)行并行處理或僅使用普通Pandas的apply(僅使用單個(gè)內(nèi)核)哪個(gè)更合理。
swifter可以直接為我們自動(dòng)選擇最佳的方式。Swifter的使用非常簡單。import pandas as pd
import swifter
df.swifter.apply(lambda x: x.sum() - x.min())
swifter,然后簡單的一行代碼調(diào)用即可,趕快試一下這個(gè)神器!

相關(guān)閱讀:
評(píng)論
圖片
表情
