小白:Mr.林,基本統計分析我已經會了,如今我想按性別分組統計下用戶數,以及按性別分組統計用戶的平均年齡,那我該如何作呢?
Mr.林:在Pandas中,對數據進行分組統計須要使用groupby函數。
咱們繼續使用導入使用的案例數據進行學習,輸入如下代碼:python
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()
獲得的結果以下所示ide
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')
執行後,獲得的結果以下所示code
1gender 2女 4316 3男 54785
而後再來按性別分組統計年齡的平均值,輸入如下代碼blog
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')
執行後,獲得的結果以下所示pandas
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')
執行後,獲得的結果以下所示it
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.林:中括號表明列表的意思,下次再詳細告訴你,今天就到這,小白你回去要多多練習,多敲代碼。
長按識別下方二維碼,並關注公衆號
回覆「DR」獲取案例數據