chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何加速apply函數(shù)600倍的技巧

數(shù)據(jù)分析與開(kāi)發(fā) ? 來(lái)源:kaggle競(jìng)賽寶典 ? 作者:杰少 ? 2022-05-12 10:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

推薦關(guān)注↓

[ 引言 ] 雖然目前dask,cudf等包的出現(xiàn),使得我們的數(shù)據(jù)處理大大得到了加速,但是并不是每個(gè)人都有比較好的gpu,非常多的朋友仍然還在使用pandas工具包,但有時(shí)候真的很無(wú)奈,pandas的許多問(wèn)題我們都需要使用apply函數(shù)來(lái)進(jìn)行處理,而apply函數(shù)是非常慢的,本文我們就介紹如何加速apply函數(shù)600倍的技巧。

實(shí)驗(yàn)對(duì)比01Apply(Baseline) 我們以Apply為例,原始的Apply函數(shù)處理下面這個(gè)問(wèn)題,需要18.4s的時(shí)間。
importpandasaspd
importnumpyasnp
df=pd.DataFrame(np.random.randint(0,11,size=(1000000,5)),columns=('a','b','c','d','e'))
deffunc(a,b,c,d,e):
ife==10:
returnc*d
elif(e=5):
returnc+d
elifereturna+b
%%time
df['new']=df.apply(lambdax:func(x['a'],x['b'],x['c'],x['d'],x['e']),axis=1)
CPUtimes:user17.9s,sys:301ms,total:18.2s
Walltime:18.4s

		
			02Swift加速
											因?yàn)樘幚硎遣⑿械?,所以我們可以使用Swift進(jìn)行加速,在使用Swift之后,相同的操作在我的機(jī)器上可以提升到7.67s。
			
%%time
#!pipinstallswifter
importswifter
df['new']=df.swifter.apply(lambdax:func(x['a'],x['b'],x['c'],x['d'],x['e']),axis=1)
HBox(children=(HTML(value='DaskApply'),FloatProgress(value=0.0,max=16.0),HTML(value='')))

CPUtimes:user329ms,sys:240ms,total:569ms
Walltime:7.67s

		
			03向量化
											使用Pandas和Numpy的最快方法是將函數(shù)向量化。如果我們的操作是可以直接向量化的話(huà),那么我們就盡可能的避免使用:
			
  • for循環(huán);
  • 列表處理;
  • apply等操作
在將上面的問(wèn)題轉(zhuǎn)化為下面的處理之后,我們的時(shí)間縮短為:421 ms。
%%time
df['new']=df['c']*df['d']#defaultcasee==10
mask=df['e']'new']=df['c']+df['d']
mask=df['e']'new']=df['a']+df['b']
CPUtimes:user134ms,sys:149ms,total:283ms
Walltime:421ms

		
			04類(lèi)別轉(zhuǎn)化+向量化
											我們先將上面的類(lèi)別轉(zhuǎn)化為int16型,再進(jìn)行相同的向量化操作,發(fā)現(xiàn)時(shí)間縮短為:116 ms。
			
forcolin('a','b','c','d'):
df[col]=df[col].astype(np.int16)
%%time
df['new']=df['c']*df['d']#defaultcasee==10
mask=df['e']'new']=df['c']+df['d']
mask=df['e']'new']=df['a']+df['b']
CPUtimes:user71.3ms,sys:42.5ms,total:114ms
Walltime:116ms

		
			
											05轉(zhuǎn)化為values處理
											在能轉(zhuǎn)化為.values的地方盡可能轉(zhuǎn)化為.values,再進(jìn)行操作。 
			
  • 此處先轉(zhuǎn)化為.values等價(jià)于轉(zhuǎn)化為numpy,這樣我們的向量化操作會(huì)更加快捷。
于是,上面的操作時(shí)間又被縮短為:74.9ms。
%%time
df['new']=df['c'].values*df['d'].values#defaultcasee==10
mask=df['e'].values'new']=df['c']+df['d']
mask=df['e'].values'new']=df['a']+df['b']
CPUtimes:user64.5ms,sys:12.5ms,total:77ms
Walltime:74.9ms

		
			

		
			實(shí)驗(yàn)匯總
						通過(guò)上面的一些小的技巧,我們將簡(jiǎn)單的Apply函數(shù)加速了幾百倍,具體的:
			
  • Apply: 18.4 s
  • Apply + Swifter: 7.67 s
  • Pandas vectorizatoin: 421 ms
  • Pandas vectorization + data types: 116 ms
  • Pandas vectorization + values + data types: 74.9ms
參考文獻(xiàn):Do You Use Apply in Pandas? There is a 600x Faster Way

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SWIFT
    +關(guān)注

    關(guān)注

    0

    文章

    124

    瀏覽量

    24586
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4400

    瀏覽量

    66334
  • 向量
    +關(guān)注

    關(guān)注

    0

    文章

    55

    瀏覽量

    11957

原文標(biāo)題:Pandas 中 Apply 函數(shù)加速百倍的技巧

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    詳解hal_entry入口函數(shù)

    當(dāng)使用RTOS時(shí),程序從main函數(shù)開(kāi)始進(jìn)行線(xiàn)程調(diào)度;當(dāng)沒(méi)有使用RTOS時(shí),C語(yǔ)言程序的入口函數(shù)main函數(shù)調(diào)用了hal_entry函數(shù)。由于我們新建的工程是沒(méi)有選用RTOS的,因此,
    的頭像 發(fā)表于 07-25 15:34 ?1452次閱讀

    使用NVIDIA CUDA-X庫(kù)加速科學(xué)和工程發(fā)展

    NVIDIA GTC 全球 AI 大會(huì)上宣布,開(kāi)發(fā)者現(xiàn)在可以通過(guò) CUDA-X 與新一代超級(jí)芯片架構(gòu)的協(xié)同,實(shí)現(xiàn) CPU 和 GPU 資源間深度自動(dòng)化整合與調(diào)度,相較于傳統(tǒng)加速計(jì)算架構(gòu),該技術(shù)可使計(jì)算工程工具運(yùn)行速度提升至原來(lái)的 11 ,計(jì)算規(guī)模增加至 5
    的頭像 發(fā)表于 03-25 15:11 ?1058次閱讀

    BK20-600D24H1N4 BK20-600D24H1N4

    電子發(fā)燒友網(wǎng)為你提供AIPULNION(AIPULNION)BK20-600D24H1N4相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有BK20-600D24H1N4的引腳圖、接線(xiàn)圖、封裝手冊(cè)、中文資料、英文資料,BK20-600D24H1N4真
    發(fā)表于 03-24 18:40
    BK20-<b class='flag-5'>600</b>D24H1N4 BK20-<b class='flag-5'>600</b>D24H1N4

    BK20-600S24H1N4 BK20-600S24H1N4

    電子發(fā)燒友網(wǎng)為你提供AIPULNION(AIPULNION)BK20-600S24H1N4相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有BK20-600S24H1N4的引腳圖、接線(xiàn)圖、封裝手冊(cè)、中文資料、英文資料,BK20-600S24H1N4真
    發(fā)表于 03-24 18:40
    BK20-<b class='flag-5'>600</b>S24H1N4 BK20-<b class='flag-5'>600</b>S24H1N4

    詳解RTOS中的Hook函數(shù)

    Hook函數(shù)是RTOS中的一個(gè)關(guān)鍵特性,通過(guò)該函數(shù),用戶(hù)可以增強(qiáng)對(duì)任務(wù)管理的控制,定義系統(tǒng)行為。
    的頭像 發(fā)表于 03-24 16:14 ?676次閱讀

    BK5-600S24H1N4 BK5-600S24H1N4

    電子發(fā)燒友網(wǎng)為你提供AIPULNION(AIPULNION)BK5-600S24H1N4相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有BK5-600S24H1N4的引腳圖、接線(xiàn)圖、封裝手冊(cè)、中文資料、英文資料,BK5-600S24H1N4真值表,
    發(fā)表于 03-20 18:35
    BK5-<b class='flag-5'>600</b>S24H1N4 BK5-<b class='flag-5'>600</b>S24H1N4

    AN207 GD32G5x3三角函數(shù)加速器TMU的使用說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《AN207 GD32G5x3三角函數(shù)加速器TMU的使用說(shuō)明.pdf》資料免費(fèi)下載
    發(fā)表于 01-21 17:30 ?2次下載
    AN207 GD32G5x3三角<b class='flag-5'>函數(shù)</b><b class='flag-5'>加速</b>器TMU的使用說(shuō)明

    西門(mén)子TIA Portal中函數(shù)FC和函數(shù)塊FB的相互轉(zhuǎn)換

    描述 本文將介紹在西門(mén)子 TIA Portal 中使用 Add-In 插件實(shí)現(xiàn)函數(shù) FC 和函數(shù)塊 FB 的相互轉(zhuǎn)換的方法和步驟。 第1步: 添加 PLC 設(shè)備。 選擇西門(mén)子 CPU 1214C
    的頭像 發(fā)表于 01-15 10:07 ?2697次閱讀
    西門(mén)子TIA Portal中<b class='flag-5'>函數(shù)</b>FC和<b class='flag-5'>函數(shù)</b>塊FB的相互轉(zhuǎn)換

    使用LIS2DW12TR加速度傳感器可以計(jì)算物體重力方向運(yùn)動(dòng)的距離嗎

    我先計(jì)算靜止?fàn)顟B(tài)下的物體加速度,判斷加速度大于靜止的1.01時(shí),開(kāi)始計(jì)時(shí)間。通過(guò)實(shí)時(shí)加速度和初始加速度的差值更新速度,通過(guò)積分,計(jì)算每一段
    發(fā)表于 12-12 16:21

    SUMIF函數(shù)對(duì)比VLOOKUP的優(yōu)勢(shì)

    在Excel中,數(shù)據(jù)管理和分析是日常工作中不可或缺的一部分。SUMIF函數(shù)和VLOOKUP函數(shù)是兩個(gè)非常受歡迎的函數(shù),它們可以幫助用戶(hù)快速地處理和分析數(shù)據(jù)。盡管它們都可以用于查找和匯總數(shù)據(jù),但它們?cè)?/div>
    的頭像 發(fā)表于 11-11 09:16 ?1544次閱讀

    SUMIF函數(shù)與SUMIFS函數(shù)的區(qū)別

    SUMIF函數(shù)和SUMIFS函數(shù)都是Excel中用于條件求和的函數(shù),它們可以幫助用戶(hù)根據(jù)特定的條件對(duì)數(shù)據(jù)進(jìn)行求和。盡管它們的基本功能相似,但在使用場(chǎng)景和功能上存在一些差異。以下是對(duì)這兩個(gè)函數(shù)
    的頭像 發(fā)表于 10-30 09:51 ?9163次閱讀

    SUMIF函數(shù)使用教程

    SUMIF函數(shù)是Excel中非常實(shí)用的函數(shù)之一,能夠根據(jù)指定條件對(duì)數(shù)據(jù)進(jìn)行篩選和求和操作。以下是對(duì)SUMIF函數(shù)使用方法的詳細(xì)教程: 一、基本語(yǔ)法 SUMIF函數(shù)的基本語(yǔ)法為: =SU
    的頭像 發(fā)表于 10-30 09:50 ?6096次閱讀

    RTOS中鉤子函數(shù)的用途及用法

    在很多操作系統(tǒng)中,都存在這樣一類(lèi)API函數(shù)接口:HOOK函數(shù)(也叫鉤子函數(shù))。
    的頭像 發(fā)表于 10-23 16:25 ?1015次閱讀
    RTOS中鉤子<b class='flag-5'>函數(shù)</b>的用途及用法

    如何由系統(tǒng)函數(shù)求頻率響應(yīng)

    頻率響應(yīng)函數(shù)表征了測(cè)試系統(tǒng)對(duì)給定頻率下的穩(wěn)態(tài)輸出與輸入的關(guān)系,可以通過(guò)系統(tǒng)函數(shù)(或稱(chēng)為傳遞函數(shù))來(lái)求解。以下是由系統(tǒng)函數(shù)求頻率響應(yīng)的步驟: 一、理解系統(tǒng)
    的頭像 發(fā)表于 10-18 09:32 ?4021次閱讀

    什么叫系統(tǒng)的頻率響應(yīng)函數(shù)?它和傳遞函數(shù)有何關(guān)系

    系統(tǒng)的頻率響應(yīng)函數(shù)(Frequency Response Function, FRF)是描述線(xiàn)性時(shí)不變(Linear Time-Invariant, LTI)系統(tǒng)在不同頻率下輸入和輸出之間關(guān)系的數(shù)學(xué)
    的頭像 發(fā)表于 10-18 09:29 ?5825次閱讀