日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

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

系統 2489 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條評論
主站蜘蛛池模板: 茶陵县| 溆浦县| 历史| 靖安县| 安国市| 灵山县| 游戏| 林甸县| 林口县| 龙里县| 凭祥市| 西乌珠穆沁旗| 清水河县| 思茅市| 缙云县| 满城县| 奎屯市| 巴南区| 连江县| 巴里| 江北区| 淮滨县| 高邑县| 太湖县| 吉水县| 中超| 寿宁县| 阜阳市| 长垣县| 万山特区| 宁蒗| 正镶白旗| 房产| 酉阳| 怀仁县| 乌什县| 东乌| 同仁县| 呈贡县| 许昌市| 汤原县|