1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Pandas中的寶藏函數(shù)-agg()

        共 3033字,需瀏覽 7分鐘

         ·

        2021-08-25 13:10



        利用agg()函數(shù)可以進(jìn)行更靈活的聚合操作

        Pandas中的的agg()函數(shù)為aggregate的縮寫,總數(shù)、合計、聚合的意思,是一個功能非常強(qiáng)大的函數(shù),在Pandas中可以利用agg()對Series、DataFrame以及groupby()后的結(jié)果進(jìn)行聚合操作。
        該函數(shù)傳入的參數(shù)為字典,鍵為變量名,值為對應(yīng)的聚合函數(shù)字符串,譬如
        {'value1':['sum','max'], 'value2':['median','max','min]}
        就代表對數(shù)據(jù)框中的value1列進(jìn)行求和、最大值操作,對value2列進(jìn)行中位數(shù)、最大值、最小值操作。
         
        下面用幾個簡單的例子演示其具體使用方式,先構(gòu)建一個基礎(chǔ)的數(shù)據(jù),用于下面的實(shí)驗。
        data = pd.DataFrame({"company":['百度', '阿里', '百度', '阿里', '百度', '騰訊', '騰訊', '阿里', '騰訊', '阿里'],'level': ['P7', 'P7', 'P8', 'P5', 'P8', 'P7', 'P8', 'P7', 'P5', 'P6'],"salary":[43000, 24000, 40000, 39000, 8000, 47000, 25000, 16000, 21000, 38000],"age":[25, 34, 49, 42, 28, 23, 45, 21, 34, 29]})

        1、聚合Series

        在對Series進(jìn)行聚合時,因為只有1列,所以可以不使用字典的形式傳遞參數(shù),直接傳入函數(shù)名列表即可:
        只計算工資列的最小值
        data['salary'].agg('min')8000
        求工資列列的最小值、最大值以及中位數(shù)
        data['salary'].agg(['min','max','median'])min 8000.0max 47000.0median 31500.0Name: salary, dtype: float64
         

        2、聚合數(shù)據(jù)框

        對數(shù)據(jù)框進(jìn)行聚合時因為有多列,所以要使用字典的方式傳入聚合方案:
        data.agg({'level': ['max','min'], 'salary': ['mean','std']}) level salarymax P8 NaNmin P5 NaNmean NaN 30100.000000std NaN 13016.655997

        值得注意的是,因為上例中對于不同變量的聚合方案不統(tǒng)一,所以會出現(xiàn)NaN的情況。
         

        3、聚合groupby()結(jié)果

        求每個公司-每個層級工資的最大值、最小值、中位數(shù)
        data.groupby(['company','level']).agg({'salary':['min','max','median']})salary min max mediancompany level 百度 P7 43000 43000 43000P8 8000 40000 24000騰訊 P5 21000 21000 21000P7 47000 47000 47000P8 25000 25000 25000阿里 P5 39000 39000 39000P6 38000 38000 38000P7 16000 24000 20000
        data.groupby(['company','level']).agg({'salary':['min','max','median']}).reset_index(drop=False)company level salary min max median0 百度 P7 43000 43000 430001 百度 P8 8000 40000 240002 騰訊 P5 21000 21000 210003 騰訊 P7 47000 47000 470004 騰訊 P8 25000 25000 250005 阿里 P5 39000 39000 390006 阿里 P6 38000 38000 380007 阿里 P7 16000 24000 20000

        可以注意到雖然我們使用reset_index()將索引列還原回變量,而在pandas 0.25.0以及之后的版本中,可以使用pd.NamedAgg()來為聚合后的每一列賦予新的名字:
        data.groupby(['company','level']).agg(min_salary = pd.NamedAgg(column='salary', aggfunc='min'),max_salary = pd.NamedAgg(column='salary', aggfunc='max'),median = pd.NamedAgg(column='salary', aggfunc='median')).reset_index(drop=False)company level min_salary max_salary median0 百度 P7 43000 43000 430001 百度 P8 8000 40000 240002 騰訊 P5 21000 21000 210003 騰訊 P7 47000 47000 470004 騰訊 P8 25000 25000 250005 阿里 P5 39000 39000 390006 阿里 P6 38000 38000 380007      阿里    P7       16000       24000   20000

        關(guān)聯(lián)閱讀:
        Pandas中的寶藏函數(shù)-map
        Pandas中的寶藏函數(shù)-apply
        Pandas中的寶藏函數(shù)-applymap
        掃描關(guān)注本號↓
        瀏覽 55
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            美女被艹哭视频 | 日本亲子乱子伦xxxx | 少妇hd高潮 | 插插插天天影视 | www.91自拍 | 女人让男人桶爽的 | 在线第一页 | 国产欧美日韩免费看aⅴ视频 | 翔田千里无码AV在线观看 | 可以免费看美女操逼 |