日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python之数据聚合——aggregate()方法

發布時間:2023/12/13 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python之数据聚合——aggregate()方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 使用內置統計方法聚合數據
  • 面向列的聚合方法
    • aggregate()方法
    • 對每一列數據應用同一個函數
    • 對某列數據應用不同的函數
    • 對不同列數據應用不同函數


使用內置統計方法聚合數據

實現數據拆分成組并分別計算平均數的操作

代碼:

import pandas as pd import numpy as npdf = pd.DataFrame({'key1': ['A', 'A', 'B', 'B', 'A'],'key2': ['one', 'two', 'one', 'two', 'one'],'data1': [2, 3, 4, 6, 8],'data2': [3, 5, np.nan, 3, 7]}) print(df.groupby('key1').mean())

輸出結果:

data1 data2 key1 A 4.333333 5.0 B 5.000000 3.0

可以看到的是,如果參與運算的數據中有NaN值,會自動將這些NaN值過濾掉


面向列的聚合方法

當內置方法無法滿足聚合要求時,可以自定義一個函數,將它傳給agg()方法(pandas 0.20版本后,aggregate()方法與agg()方法用法一樣)。

aggregate()方法

aggregate(self, func=None, *args, **kwargs)

上述方法中部分參數表示的含義如下:

  • func:表示用于匯總數據的函數,可以為單個函數或函數列表
  • axis:表示函數作用于軸的方向,0或1,index或columns
  • 通過aggregate()方法進行聚合時,func參數既可以接受Pandas中的內置方法,也可以接受自定義的函數,同時,這些方法與函數可以作用于每一列,也可以將多個函數或方法作用于同一列,還可以將不同函數或方法作用于不同的列。


    對每一列數據應用同一個函數

    創建測試對象:

    df1 = DataFrame(np.arange(36).reshape(6, 6),columns=list('abcdef')) df1['key'] = Series(list('aaabbb'), name='key') print(df1)

    輸出結果:

    a b c d e f key 0 0 1 2 3 4 5 a 1 6 7 8 9 10 11 a 2 12 13 14 15 16 17 a 3 18 19 20 21 22 23 b 4 24 25 26 27 28 29 b 5 30 31 32 33 34 35 b

    接下來對測試對象以“key“列為分組鍵進行拆分,并通過字典的形式分別打印出每個分組的具體內容。

    進行拆分

    df1_group = df1.groupby(by='key') print(dict([i for i in df1_group])['a']) print(dict([i for i in df1_group])['b'])

    輸出結果:

    a b c d e f key 0 0 1 2 3 4 5 a 1 6 7 8 9 10 11 a 2 12 13 14 15 16 17 aa b c d e f key 3 18 19 20 21 22 23 b 4 24 25 26 27 28 29 b 5 30 31 32 33 34 35 b

    上述過程中,先調用groupby()方法,按key一列的數據將df1對象進行分為a、b兩組,然后使用列表推導式([i for i in df1_group])遍歷分組對象df1_group,得到每個分組的列表,之后將裝有分組的列表強轉換為字典,其中字典中的鍵為a和b,字典的值分別為分組的具體內容。之后通過“字典[組名]”的形式,分別查看a、b組數據。


    當然也可以用for循環直接兩組一起輸出

    for i in df1_group:print(i)

    輸出結果

    ('a', a b c d e f key 0 0 1 2 3 4 5 a 1 6 7 8 9 10 11 a 2 12 13 14 15 16 17 a) ('b', a b c d e f key 3 18 19 20 21 22 23 b 4 24 25 26 27 28 29 b 5 30 31 32 33 34 35 b)

    接下來,對每個分組的數據進行聚合運算。

    調用內置的求和方法sum():

    print("sum:\n", df1_group.aggregate(sum))

    輸出結果:

    sum:a b c d e f key a 18 21 24 27 30 33 b 72 75 78 81 84 87

    自定義一個實現求極差值(極差值 = 最大值 - 最小值)的函數,然后將其作為參數傳入aggregate()方法中:

    def range_df1_group(arr):return arr.max() - arr.min()print("極差值:\n", df1_group.aggregate(range_df1_group))

    輸出結果:

    極差值:a b c d e f key a 12 12 12 12 12 12 b 12 12 12 12 12 12

    對某列數據應用不同的函數

    如今要求不僅要求出每組數據的極差,還要計算出每組數據的和。這是可將兩個函數的名稱放在列表中,之后在調用aggregate()方法聚合時作為參數傳入即可。

    代碼實現:

    print("sum and 極差值:\n", df1_group.aggregate(func=[sum, range_df1_group]))

    輸出結果:

    sum and 極差值:a b ... e f sum range_df1_group sum ... range_df1_group sum range_df1_group key ... a 18 12 21 ... 12 33 12 b 72 12 75 ... 12 87 12[2 rows x 12 columns]

    從輸出結果可以看出,生成的DataFrame對象具有兩層索引,每個外層列索引包含兩個內層列索引,分別以函數的名稱range_df1_group和sum命名。

    雖然每一列可以應用不同的函數,但是結果并不能很直觀地辨別出每個函數代表的意義。為了更好地反映出每列對應地數據的信息, 可以使用“(name,function)”元組將function(函數名)替換為name(自定義名稱)。

    代碼實現:

    print("極差值 and sum:\n", df1_group.aggregate([("極差", range_df1_group), ("和", sum)]))

    輸出結果:

    極差值 and sum:a b c d e f 極差 和 極差 和 極差 和 極差 和 極差 和 極差 和 key a 12 18 12 21 12 24 12 27 12 30 12 33 b 12 72 12 75 12 78 12 81 12 84 12 87

    區別其實就是不會出現列名過長導致的無法顯示全的問題了


    對不同列數據應用不同函數

    如果希望實現對不同列數據應用不同函數,咋可以在aggregate()方法中傳入一個{“列名”:“函數名”}格式的字典。

    代碼實現:

    print("綜合:\n", df1_group.aggregate({'a': 'sum', 'b': range_df1_group, 'c': 'mean'})

    輸出結果:

    綜合:a b c key a 18 12 8 b 72 12 26

    上例中,使用不同的函數對每個分組執行聚合運算,其中a列執行求和運算,b列執行求極差計算,c列執行求平均值計算。自定義函數不需要加引號。


    aggregate()方法執行聚合操作時,會將一組標量值參與某些運算后轉換為一個標量值。

    總結

    以上是生活随笔為你收集整理的Python之数据聚合——aggregate()方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日韩福利 | 熟妇人妻无乱码中文字幕真矢织江 | 最新超碰| 老妇裸体性猛交视频 | 国产又猛又粗 | 免费成人激情视频 | 中文字幕一区二区三区四区 | 欧美日韩在线一区二区 | 国内黄色网址 | 自宅警备员在线观看 | 欧美粗暴se喷水 | 日韩激情视频网站 | 亚洲色图婷婷 | 国产电影免费观看高清完整版视频 | 日韩在线视频免费看 | 全部免费毛片在线播放 | 欧美一区亚洲 | 好吊视频一区二区三区 | 成人激情站 | 日本色呦呦 | 欧美成人女星 | 国产黄色网页 | 国产中文一区 | 大肉大捧一进一出好爽mba | 天天网综合| 欧美顶级少妇做爰hd | 91麻豆网 | 欧美xxxx18 | 亚洲一区二区三区免费 | 裸体美女免费视频网站 | 国产欧美精品在线 | 亚洲福利一区二区三区 | 久久久999视频 | 国产精品99久久久久久一二区 | 97射射| 暖暖日本视频 | 狠狠躁18三区二区一区传媒剧情 | 91国内在线视频 | 亚洲精品在线视频 | 亚洲精品一区二区三区蜜桃 | 四虎免费影视 | 国产女人18毛片水真多 | 狠狠干狠狠干 | 日韩 欧美 中文 | 久久国产视频一区 | 激情拍拍拍| 成人无码视频 | 亚洲精品一区二区三区四区乱码 | 四虎影视www在线播放 | 日韩激情小说 | 亚洲欧美在线成人 | 三上悠亚在线观看一区二区 | 夜夜综合 | 日韩三级大片 | 天天色天天操天天射 | av大帝在线观看 | 国产一区二区内射 | 好邻居韩国剧在线观看 | 国产精品久久久久久久久毛片 | 亚洲成人第一 | 99成人在线视频 | 国内视频一区 | 成人av影院| 日本免费黄视频 | 在线精品一区二区 | 精品三级 | 致命魔术电影高清在线观看 | 国产又爽又黄免费视频 | 久久综合九色综合欧美狠狠 | 黄色在线视频观看 | av高清不卡 | 成人免费性视频 | 永久免费黄色 | 大桥未久av一区二区三区中文 | 亚洲最大看欧美片网站 | 91成人免费在线 | 中文字幕制服丝袜 | 国产剧情在线 | 韩国一区二区三区在线观看 | 午夜在线观看视频网站 | 久久成人a毛片免费观看网站 | 黄色片网站免费观看 | 国产精品一区二区三区免费观看 | 欧美熟妇精品久久久久久 | 男女做事网站 | 免费激情网 | 色婷婷一区二区三区 | 国产系列精品av | 中国一级大黄大黄大色毛片 | 香蕉在线网站 | 欧美日韩三级视频 | 久久久精品国产sm调教网站 | 日本免费爱爱视频 | www性| 丰满岳妇乱一区二区三区 | 日韩一级片免费观看 | 露出调教羞耻91九色 | 国产麻豆精品在线 | 三级av网站 |