小編給大家分享一下如何加快pandas計(jì)算速度,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
在沅陵等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷,外貿(mào)營(yíng)銷網(wǎng)站建設(shè),沅陵網(wǎng)站建設(shè)費(fèi)用合理。
什么問題困擾我們?
使用pandas,當(dāng)您運(yùn)行以下行時(shí):
# Standard apply
df.apply(func)
得到這個(gè)CPU使用率:
標(biāo)準(zhǔn)pandas適用 - 僅使用1個(gè)CPU
即使計(jì)算機(jī)有多個(gè)CPU,也只有一個(gè)完全專用于您的計(jì)算。
而不是下邊這種CPU使用,想要一個(gè)簡(jiǎn)單的方法來得到這樣的東西:
并行Pandas適用 - 使用所有CPU
Pandaral·lel?如何幫助解決這個(gè)問題?
Pandaral·lel?的想法是將pandas計(jì)算分布在計(jì)算機(jī)上所有可用的CPU上,以顯著提高速度。
安裝:
$ pip install pandarallel [--user]
導(dǎo)入和初始化:
# Import
from pandarallel import pandarallel
# Initialization
pandarallel.initialize()
用法:
使用帶有pandas DataFrame的簡(jiǎn)單用例df和要應(yīng)用的函數(shù)func,只需替換經(jīng)典apply的parallel_apply。
# Standard pandas apply
df.apply(func)
# Parallel apply
df.parallel_apply(func)
做完了!
請(qǐng)注意如果不想并行化計(jì)算,仍然可以使用經(jīng)典apply方法。
也可以通過將顯示每個(gè)工作CPU一個(gè)進(jìn)度條progress_bar=True的initialize功能。
并行應(yīng)用進(jìn)度條
并配有更復(fù)雜的情況下使用帶有pandas DataFrame df,該數(shù)據(jù)幀的兩列column1,column2和功能應(yīng)用func:
# Standard pandas apply
df.groupby(column1).column2.rolling(4).apply(func)
# Parallel apply
df.groupby(column1).column2.rolling(4).parallel_apply(func)
基準(zhǔn)
對(duì)于此處提供的四個(gè)示例,請(qǐng)執(zhí)行以下配置:
https://github.com/nalepae/pandarallel/blob/master/docs/examples.ipynb
操作系統(tǒng):Linux Ubuntu 16.04
硬件:Intel Core i7 @ 3.40 GHz - 4核
4核上的標(biāo)準(zhǔn)與并行(越低越好)
除了df.groupby.col_name.rolling.apply速度僅增加x3.2因子之外,平均速度增加約x4因子,即使用過的計(jì)算機(jī)上的核心數(shù)。
它是如何在引擎蓋下工作的?
調(diào)用parallel_apply時(shí),Pandaral·lel:
實(shí)例化一個(gè)Pyarrow Plasma共享內(nèi)存
https://arrow.apache.org/docs/python/plasma.html
為每個(gè)CPU創(chuàng)建一個(gè)子進(jìn)程,然后要求每個(gè)CPU在DataFrame的子部分上工作
將所有結(jié)果合并到父進(jìn)程中
以上是“如何加快pandas計(jì)算速度”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!