最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pandas中apply和transform方法的性能比較及區(qū)別介紹

 更新時(shí)間:2018年10月30日 11:54:54   作者:Bo_hemian  
這篇文章主要介紹了pandas中apply和transform方法的性能比較,在文中給大家講解了apply() 與transform()的相同點(diǎn)與不同點(diǎn),需要的朋友可以參考下

1. apply與transform

首先講一下apply() 與transform()的相同點(diǎn)與不同點(diǎn)

相同點(diǎn):

都能針對(duì)dataframe完成特征的計(jì)算,并且常常與groupby()方法一起使用。

不同點(diǎn):

apply()里面可以跟自定義的函數(shù),包括簡(jiǎn)單的求和函數(shù)以及復(fù)雜的特征間的差值函數(shù)等(注:apply不能直接使用agg()方法 / transform()中的python內(nèi)置函數(shù),例如sum、max、min、'count‘等方法)

transform() 里面不能跟自定義的特征交互函數(shù),因?yàn)閠ransform是真針對(duì)每一元素(即每一列特征操作)進(jìn)行計(jì)算,也就是說(shuō)在使用 transform() 方法時(shí),需要記得三點(diǎn):

1、它只能對(duì)每一列進(jìn)行計(jì)算,所以在groupby()之后,.transform()之前是要指定要操作的列,這點(diǎn)也與apply有很大的不同。

2、由于是只能對(duì)每一列計(jì)算,所以方法的通用性相比apply()就局限了很多,例如只能求列的最大/最小/均值/方差/分箱等操作

3、transform還有什么用呢?最簡(jiǎn)單的情況是試圖將函數(shù)的結(jié)果分配回原始的dataframe。也就是說(shuō)返回的shape是(len(df),1)。注:如果與groupby()方法聯(lián)合使用,需要對(duì)值進(jìn)行去重

2. 各方法耗時(shí)

分別計(jì)算在同樣簡(jiǎn)單需求下各組合方法的計(jì)算時(shí)長(zhǎng)

2.1 transform() 方法+自定義函數(shù)


2.2 transform() 方法+python內(nèi)置方法


2.3 apply() 方法+自定義函數(shù)


2.4 agg() 方法+自定義函數(shù)


2.5 agg() 方法+python內(nèi)置方法


2.6 結(jié)論

agg()+python內(nèi)置方法的計(jì)算速度最快,其次是transform()+python內(nèi)置方法。而 transform() 方法+自定義函數(shù) 的組合方法最慢,需要避免使用!

而下面兩圖中紅框內(nèi)容可觀察發(fā)現(xiàn):python自帶的stats統(tǒng)計(jì)模塊在pandas結(jié)構(gòu)中的計(jì)算也非常慢,也需要避免使用!

3. 實(shí)例分析

需求:計(jì)算每個(gè)用戶(hù)每天

某種行為消費(fèi)次數(shù)、消費(fèi)總額、消費(fèi)均額、消費(fèi)最大額、消費(fèi)最小額

在幾個(gè)終端支付、最常支付終端號(hào)、最常支付終端號(hào)的支付次數(shù)、最少支付終端號(hào)、最少支付終端號(hào)的支付次數(shù)

某種行為最常消費(fèi)發(fā)生時(shí)間段、最常消費(fèi)發(fā)生時(shí)間段的消費(fèi)次數(shù)、最少消費(fèi)發(fā)生時(shí)間段、最少消費(fèi)發(fā)生時(shí)間段的消費(fèi)次數(shù)

某種行為最早消費(fèi)時(shí)間、最晚消費(fèi)時(shí)間

原始數(shù)據(jù)信息:306626 x 9


具體選擇哪種方法處理,根據(jù)實(shí)際情況確定,在面對(duì)復(fù)雜計(jì)算時(shí),transform() 與apply()結(jié)合使用往往會(huì)有意想不到的效果!

需要注意的是,在與apply()一起使用時(shí),transform需要進(jìn)行去重操作,一般是通過(guò)指定一或多個(gè)列完成。

此外,匿名函數(shù)永遠(yuǎn)不是一個(gè)很好的辦法,在進(jìn)行簡(jiǎn)單計(jì)算時(shí),無(wú)論是使用transfrom、agg還是apply,都要盡可能使用自帶方法?。?!

4. 小技巧

在使用apply()方法處理大數(shù)據(jù)級(jí)時(shí),可以考慮使用joblib中的多線程/多進(jìn)程模塊構(gòu)造相應(yīng)函數(shù)執(zhí)行計(jì)算,以下分別是采用多進(jìn)程和單進(jìn)程的耗時(shí)時(shí)長(zhǎng)。

可以看到,在260W的數(shù)據(jù)集上,多進(jìn)程比單進(jìn)程的計(jì)算速度可以提升約17%~61%  。

總結(jié)

以上所述是小編給大家介紹的pandas中apply和transform方法的性能比較,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • python如何給字典的鍵對(duì)應(yīng)的值為字典項(xiàng)的字典賦值

    python如何給字典的鍵對(duì)應(yīng)的值為字典項(xiàng)的字典賦值

    這篇文章主要介紹了python如何給字典的鍵對(duì)應(yīng)的值為字典項(xiàng)的字典賦值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • pytorch hook 鉤子函數(shù)的用法

    pytorch hook 鉤子函數(shù)的用法

    這篇文章主要介紹了pytorch hook 鉤子函數(shù)的用法,Hook 是 PyTorch 中一個(gè)十分有用的特性,使用后可以不必改變網(wǎng)絡(luò)輸入輸出的結(jié)構(gòu),方便地獲取、改變網(wǎng)絡(luò)中間層變量的值和梯度,下文詳細(xì)介紹需要的小伙伴可以參考一下
    2022-03-03
  • 使用Python提取PDF表格到Excel文件的操作步驟

    使用Python提取PDF表格到Excel文件的操作步驟

    在對(duì)PDF中的表格進(jìn)行再利用時(shí),除了直接將PDF文檔轉(zhuǎn)換為Excel文件,我們還可以提取PDF文檔中的表格數(shù)據(jù)并寫(xiě)入Excel工作表,本文將介紹如何使用Python提取PDF文檔中的表格并寫(xiě)入Excel文件中,需要的朋友可以參考下
    2024-09-09
  • 舉例講解Python編程中對(duì)線程鎖的使用

    舉例講解Python編程中對(duì)線程鎖的使用

    Python的threading模塊中提供了多種鎖的相關(guān)方法,Python的多線程不能同時(shí)執(zhí)行,因而鎖的使用非常關(guān)鍵,下面我們就來(lái)舉例講解Python編程中對(duì)線程鎖的使用:
    2016-07-07
  • python+pygame簡(jiǎn)單畫(huà)板實(shí)現(xiàn)代碼實(shí)例

    python+pygame簡(jiǎn)單畫(huà)板實(shí)現(xiàn)代碼實(shí)例

    這篇文章主要介紹了python+pygame簡(jiǎn)單畫(huà)板實(shí)現(xiàn)代碼實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • pytorch鎖死在dataloader(訓(xùn)練時(shí)卡死)

    pytorch鎖死在dataloader(訓(xùn)練時(shí)卡死)

    這篇文章主要介紹了pytorch鎖死在dataloader(訓(xùn)練時(shí)卡死),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)的三種方式簡(jiǎn)單示例

    Python實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)的三種方式簡(jiǎn)單示例

    這篇文章主要介紹了Python實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)的三種方式,結(jié)合簡(jiǎn)單實(shí)例形式分析了Python使用time,os,sched等模塊定時(shí)執(zhí)行任務(wù)的相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • python實(shí)現(xiàn)漢諾塔方法匯總

    python實(shí)現(xiàn)漢諾塔方法匯總

    本文給大家匯總了幾種使用Python結(jié)合遞歸算法實(shí)現(xiàn)漢諾塔的方法,非常的簡(jiǎn)單實(shí)用,對(duì)大家學(xué)習(xí)Python很有幫助,希望大家能夠喜歡
    2016-07-07
  • python3.6利用pyinstall打包py為exe的操作實(shí)例

    python3.6利用pyinstall打包py為exe的操作實(shí)例

    今天小編就為大家分享一篇python3.6利用pyinstall打包py為exe的操作實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python實(shí)現(xiàn)視頻自動(dòng)打碼的示例代碼

    Python實(shí)現(xiàn)視頻自動(dòng)打碼的示例代碼

    我們?cè)谟^看視頻的時(shí)候,有時(shí)候會(huì)出現(xiàn)一些奇怪的馬賽克,影響我們的觀影體驗(yàn),那么這些馬賽克是如何精確的加上去的呢?本文就來(lái)為大家詳細(xì)講講
    2022-04-04

最新評(píng)論

论坛| 鄄城县| 伊春市| 双牌县| 青岛市| 鄂尔多斯市| 克东县| 剑河县| 壶关县| 新河县| 鹤峰县| 大名县| 汝州市| 长武县| 富阳市| 平定县| 镶黄旗| 辉县市| 即墨市| 家居| 阿尔山市| 托克托县| 台北市| 安义县| 西平县| 镇远县| 饶平县| 宜州市| 定边县| 恩施市| 娄烦县| 濮阳县| 淄博市| 亚东县| 梁河县| 甘洛县| 铁岭市| 儋州市| 安西县| 江北区| 玛多县|