欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1. apply與transform

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

相同點:

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

不同點:

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

transform() 里面不能跟自定義的特征交互函數(shù),因為transform是真針對每一元素(即每一列特征操作)進行計算,也就是說在使用 transform() 方法時,需要記得三點:

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

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

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

2. 各方法耗時

分別計算在同樣簡單需求下各組合方法的計算時長

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)置方法的計算速度最快,其次是transform()+python內(nèi)置方法。而 transform() 方法+自定義函數(shù) 的組合方法最慢,需要避免使用!

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

3. 實例分析

需求:計算每個用戶每天

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

在幾個終端支付、最常支付終端號、最常支付終端號的支付次數(shù)、最少支付終端號、最少支付終端號的支付次數(shù)

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

某種行為最早消費時間、最晚消費時間

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


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

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

此外,匿名函數(shù)永遠不是一個很好的辦法,在進行簡單計算時,無論是使用transfrom、agg還是apply,都要盡可能使用自帶方法?。。?/p>

4. 小技巧

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

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

總結(jié)

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

相關(guān)文章

  • python中使用you-get庫批量在線下載bilibili視頻的教程

    python中使用you-get庫批量在線下載bilibili視頻的教程

    這篇文章主要介紹了使用python中you-get庫批量在線下載bilibili視頻的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python查詢Mysql時返回字典結(jié)構(gòu)的代碼

    Python查詢Mysql時返回字典結(jié)構(gòu)的代碼

    MySQLdb默認查詢結(jié)果都是返回tuple,輸出時候不是很方便,必須按照0,1這樣讀取,無意中在網(wǎng)上找到簡單的修改方法,就是傳遞一個cursors.DictCursor就行
    2012-06-06
  • Python如何快速實現(xiàn)分布式任務(wù)

    Python如何快速實現(xiàn)分布式任務(wù)

    這篇文章主要介紹了Python如何快速實現(xiàn)分布式任務(wù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Django中ajax發(fā)送post請求 報403錯誤CSRF驗證失敗解決方案

    Django中ajax發(fā)送post請求 報403錯誤CSRF驗證失敗解決方案

    這篇文章主要介紹了Django中ajax發(fā)送post請求 報403錯誤CSRF驗證失敗解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 如何將yolov5中的PANet層改為BiFPN詳析

    如何將yolov5中的PANet層改為BiFPN詳析

    現(xiàn)在yolov5的neck用的是PANet,在efficient論文中提出了BiFPN結(jié)構(gòu),還有更加不錯的性能,下面這篇文章主要給大家介紹了關(guān)于如何將yolov5中的PANet層改為BiFPN的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • python抓取網(wǎng)頁圖片并放到指定文件夾

    python抓取網(wǎng)頁圖片并放到指定文件夾

    這篇文章主要介紹了python抓取網(wǎng)頁圖片并放到指定文件夾,需要的朋友可以參考下
    2014-04-04
  • Django框架使用內(nèi)置方法實現(xiàn)登錄功能詳解

    Django框架使用內(nèi)置方法實現(xiàn)登錄功能詳解

    這篇文章主要介紹了Django框架使用內(nèi)置方法實現(xiàn)登錄功能,結(jié)合實例形式詳細分析了Django框架內(nèi)置方法實現(xiàn)登錄功能的相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下
    2019-06-06
  • python實現(xiàn)發(fā)送QQ郵件(可加附件)

    python實現(xiàn)發(fā)送QQ郵件(可加附件)

    這篇文章主要為大家詳細介紹了python實現(xiàn)發(fā)送QQ郵件,可添加附件功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Python 生成 -1~1 之間的隨機數(shù)矩陣方法

    Python 生成 -1~1 之間的隨機數(shù)矩陣方法

    今天小編就為大家分享一篇Python 生成 -1~1 之間的隨機數(shù)矩陣方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • python模塊詳解之pywin32使用文檔(python操作windowsAPI)

    python模塊詳解之pywin32使用文檔(python操作windowsAPI)

    pywin32是一個第三方模塊庫,主要的作用是方便python開發(fā)者快速調(diào)用windows API的一個模塊庫,這篇文章主要給大家介紹了關(guān)于python模塊詳解之pywin32使用文檔的相關(guān)資料,文中將python操作windowsAPI介紹的非常詳細,需要的朋友可以參考下
    2024-01-01

最新評論