小白:Mr.林,基本統計分析我已經會了,現在我想按性別分組統計下用戶數,以及按性別分組統計用戶的平均年齡,那我該如何做呢?
Mr.林:在Pandas中,對數據進行分組統計需要使用groupby函數。
我們繼續使用導入使用的案例數據進行學習,輸入以下代碼:
1import pandas
2data = pandas.read_csv(
3'D:/D/data.csv',
4 engine='python',
5 encoding='utf8'
6)
Mr.林:執行後,在變量瀏覽窗口中就可以看到剛導入的data變量了,雙擊打開data變量,就可以得到下面這張表。
先來統計按性別分組的用戶數,輸入以下代碼
1data.groupby('gender').count()
得到的結果如下所示
1 id reg_date id_num birthday age
2gender
3女 4316 4316 4316 4316 4316
4男 54785 54785 54785 54785 54785
然後再來統計按性別分組的平均值,輸入以下代碼
1data.groupby('gender').mean()
得到的結果如下所示
1 id age
2gender
3女 149779.770853 30.392493
4男 149833.467829 26.979629
小白:我發現了一個問題,它又根據所有能統計的列都統計了結果。如果我只是僅僅希望按性別分組統計下用戶數,以及按性別分組統計用戶的平均年齡,那我該如何做呢?
Mr.林:這個時候可以使用groupby與agg函數組合進行統計。
還是先來按性別分組統計id的數量,也就是用戶數,輸入以下代碼
1data.groupby('gender')['id'].agg('count')
執行後,得到的結果如下所示
1gender
2女 4316
3男 54785
然後再來按性別分組統計年齡的平均值,輸入以下代碼
1data.groupby('gender')['age'].agg('mean')
執行後,得到的結果如下所示
1gender
2女 30.392493
3男 26.979629
小白:啊哈!棒棒噠!
小白突然又想到一個問題:那我能不能在性別分組的基礎上,再加入一個分組列,比如將註冊日期加到分組列裏?
Mr.林:這可以有,只要在gender前面再加入reg_date,如果還有其他分組列可以繼續加入,用逗號分隔即可,輸入以下代碼
1data.groupby(['reg_date','gender'])['id'].agg('count')
執行後,得到的結果如下所示
1reg_date gender
22011/1/1 男 10
32011/1/10 女 6
4 男 160
52011/1/11 女 15
6 男 165
72011/1/12 女 19
8 男 132
92011/1/13 女 16
10 男 167
112011/1/14 女 13
12 男 194
13.........................
小白繼續追問道:那我能不能對多個列進行統計呢?現在只對id列進行統計,如果再把age列加進來,可以麼?
Mr.林:這個同樣可以有,不過如果還是計數的話,對id、age兩列統計的結果是一樣的,我們換成平均值統計試試,輸入以下代碼
1data.groupby(['reg_date','gender'])['id','age'].agg('mean')
執行後,得到的結果如下所示
1 id age
2reg_date gender
32011/1/1 男 100008.600000 29.200000
42011/1/10 女 101276.500000 36.333333
5 男 101295.262500 26.862500
62011/1/11 女 101617.400000 31.400000
7 男 101590.054545 26.636364
82011/1/12 女 101897.157895 28.157895
9 男 101874.174242 26.500000
102011/1/13 女 102122.625000 30.562500
11 男 102153.694611 27.101796
122011/1/14 女 102461.153846 32.384615
13 男 102482.067010 26.974227
14.........................
小白:太棒了,我還有個疑問,groupby那裏跟後面id、age的中括號是什麼意思呀?
Mr.林:中括號代表列表的意思,下次再詳細告訴你,今天就到這,小白你回去要多多練習,多敲代碼。
如果你喜歡本文,可以點擊右下角在看
如果你在跟着學習,請在留言區留言:打卡
如果你剛看到本文,可以查看本系列歷史文章跟着學習:
跟小白學Python數據分析——Anaconda安裝
跟小白學Python數據分析——使用spyder
跟小白學Python數據分析——數據導入1
跟小白學Python數據分析——數據導入2
跟小白學Python數據分析——描述性統計分析
長按識別下方二維碼,並關注公衆號
回覆“DR”獲取案例數據