亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【Python】分組統計GroupBy技術詳解

系統 2574 0

摘要

進行數據分析時,GroupBy分組統計是非常常用的操作,也是十分重要的操作之一。基本上大部分的數據分析都會用到該操作,本文將對Python的GroupBy分組統計操作進行講解。 碼字不易,喜歡請點贊,謝謝!!!
【Python】分組統計GroupBy技術詳解_第1張圖片
1.GroupBy過程
首先看看分組聚合的過程,主要包括拆分(split)、應用(Apply)和合并(Combine)
【Python】分組統計GroupBy技術詳解_第2張圖片

2.創建DataFrame

            
              import pandas as pd
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
         'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
         'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
         'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
         'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
df

            
          

【Python】分組統計GroupBy技術詳解_第3張圖片

3.將df按照Team列分組
分組之后的grouped是個DataFrameGroupBy對象

            
              grouped = df.groupby('Team')
grouped

            
          

在這里插入圖片描述

4.查看df按照Team分組之后結果
按照不同的Team值來分組

            
              grouped.groups

            
          

【Python】分組統計GroupBy技術詳解_第4張圖片

5.分組后的結果對Points求和

            
              grouped['Points'].sum()

            
          

【Python】分組統計GroupBy技術詳解_第5張圖片
分組后常用操作包括:求和(sum)、平均值(mean)、計數(count)等等,如下圖。
【Python】分組統計GroupBy技術詳解_第6張圖片

6.根據任意長度適當的數組分組

            
              import numpy as np
key1 = np.array(list('abababbaaabb'))
df.groupby(key1).Team.count()

            
          

在這里插入圖片描述

7.對分組進行迭代
GroupBy分組產生的是一組二元元組,有分組名和數據塊組成。即(分組名、數據塊)。

            
              for name,group in df.groupby('Team'):
    print(name)
    print(group)
    print('*******分隔符*********')

            
          

【Python】分組統計GroupBy技術詳解_第7張圖片
另外,對于多重建分組的情況,元組的第一個元素將是由元組組成。
即((分組名1,分組名2)、數據塊)。

            
              for (name1,name2),group in df.groupby(['Team','Rank']):
    print(name1)
    print(name2)
    print(group)
    print('*******分隔符*********')

            
          

圖片結果太長,只顯示了部分。
【Python】分組統計GroupBy技術詳解_第8張圖片

8.在不同軸上分組
GroupBy默認是在axis=0軸上進行分組的,也可以在axis=1軸上進行分組聚合,不過用的相對較少。

            
              df.dtypes

            
          

【Python】分組統計GroupBy技術詳解_第9張圖片

            
              grouped = df.groupby(df.dtypes, axis=1)
grouped.groups

            
          

在這里插入圖片描述

9.通過字典或Series進行分組

            
              people = pd.DataFrame(np.random.randn(5, 5),
                      columns=['a', 'b', 'c', 'd', 'e'],
                      index=['Joe', 'Steve', 'Wes', 'Jim','Travis'])
people.iloc[2:3, [1, 2]] = np.nan
people

            
          

【Python】分組統計GroupBy技術詳解_第10張圖片
根據字典聚合

            
              mapping = {'a': 'red', 'b': 'red', 'c': 'blue',
           'd': 'blue', 'e': 'red', 'f' : 'orange'}
by_column = people.groupby(mapping, axis=1)
by_column.sum()

            
          

【Python】分組統計GroupBy技術詳解_第11張圖片
根據Series聚合

            
              map_series = pd.Series(mapping)
people.groupby(map_series, axis=1).count()

            
          

【Python】分組統計GroupBy技術詳解_第12張圖片

10.通過函數進行分組

            
              people.groupby(len).sum()

            
          

【Python】分組統計GroupBy技術詳解_第13張圖片

11.函數、數組、列表、字典、Series組合分組

            
              key_list = ['one', 'one', 'one', 'two', 'two']
people.groupby([len, key_list]).min()

            
          

【Python】分組統計GroupBy技術詳解_第14張圖片

12.根據索引級別分組
回到最初的DataFrame,給他重新定義成雙層索引,并且給索引命名

            
              df.columns = ([['a','a','a','b'],['Team', 'Rank', 'Year', 'Points']])
df.columns.names = ['one','two']
df

            
          

【Python】分組統計GroupBy技術詳解_第15張圖片
之后對索引名為one的進行分組聚合

            
              df.groupby(level='one',axis=1).count()

            
          

【Python】分組統計GroupBy技術詳解_第16張圖片

12.多函數聚合
其中多函數聚合中也可以使用自定義函數。

            
              df.columns = ['Team','Rank','Year','Points']
df.groupby('Team')['Points'].agg(['sum','mean','std'])

            
          

【Python】分組統計GroupBy技術詳解_第17張圖片

13.apply:一般性的“拆分-應用-合并”
定義函數:

            
              def top(df,n=2,column='Points'):
    return df.sort_index(by=column,ascending=False)[:n]

            
          

應用:

            
              df.groupby('Team').apply(top)

            
          

【Python】分組統計GroupBy技術詳解_第18張圖片
同時給apply函數傳入參數:

            
              df.groupby('Team').apply(top,n=3)

            
          

【Python】分組統計GroupBy技術詳解_第19張圖片


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精品国产99久久无毒不卡 | 夜夜爽毛片 | 美女久久久 | 国产成 人 综合 亚洲网 | 国产性做久久久久久 | 午夜精品成年片色多多 | 狠狠澡夜夜澡人人爽 | 欧美综合中文字幕久久 | 欧美精品v国产精品v | 国产久草视频 | 国产精品热久久毛片 | 亚洲夂夂婷婷色拍ww47 | 97视频免费播放观看在线视频 | 亚洲精品一区 | 欧日韩在线不卡视频 | 99精品观看| 欧美一级视频免费看 | 特黄特色大片免费播放器999 | 波多野结衣国产一区二区三区 | 香蕉视频禁止18 | 99国产精品2018视频全部 | 黄色在线免费看 | 毛片色毛片18毛片美女 | 日本一区中文字幕 | 婷婷免费视频 | 69日本人xxxx16—18 | 黑人和黑人激情一级毛片 | 一区二区在线精品免费视频 | 国产精品视频免费播放 | 黄色毛片小视频 | 国产精品久久久久久久久免费 | 国产精品久久久久久免费 | 欧美一区二区三区在线播放 | 精品午夜国产在线观看不卡 | 久久五月天婷婷 | 日韩一区二区超清视频 | 九九久久精品 | 四虎在线成人免费网站 | 成人在线综合 | 夜夜操女人 | 超级乱淫视频aⅴ播放视频 超级乱淫视频播放日韩 |