pandas_分組聚合_groupby和agg的區別
對特定字段進行聚合操作
對多個字段進行分組
對多個字段進行分組,多個字段進行聚合運算
數據地址:鏈接: https://pan.baidu.com/s/1A42jbAVw90AKqgfK2dpddg 提取碼: jxth
import pandas
data = pandas.read_csv(
'C:/data/data/data.csv',
engine='python',
encoding='utf8'
)
data.head()
id reg_date id_num gender birthday age
0 100000 2011/1/1 15010219621116401I 男 1962/11/16 52
1 100001 2011/1/1 45092319910527539E 男 1991/5/27 23
2 100002 2011/1/1 35010319841017421J 男 1984/10/17 30
3 100006 2011/1/1 37110219860824751B 男 1986/8/24 28
4 100010 2011/1/1 53042219860714031J 男 1986/7/14 28
# 先來統計按性別分組的用戶數,輸入以下代碼
data.groupby('gender').count()
id reg_date id_num birthday age
gender
女 4316 4316 4316 4316 4316
男 54785 54785 54785 54785 54785
# 然後再來統計按性別分組的平均值,輸入以下代碼
data.groupby('gender').mean()
id age
gender
女 149779.770853 30.392493
男 149833.467829 26.979629
# 它又根據所有能統計的列都統計了結果。如果我只是僅僅希望按性別分組統計下用戶數,以及按性別分組統計用戶的平均年齡,那我該如何做呢?
# Mr.林:這個時候可以使用groupby與agg函數組合進行統計。
# 對特定字段進行聚合操作
data.groupby('gender')['id'].agg('count')
gender
女 4316
男 54785
Name: id, dtype: int64
# 然後再來按性別分組統計年齡的平均值,輸入以下代碼
data.groupby('gender')['age'].agg('mean')
gender
女 30.392493
男 26.979629
Name: age, dtype: float64
# 小白突然又想到一個問題:那我能不能在性別分組的基礎上,再加入一個分組列,比如將註冊日期加到分組列裏?
# Mr.林:這可以有,只要在gender前面再加入reg_date,如果還有其他分組列可以繼續加入,用逗號分隔即可,輸入以下代碼
# 對多個字段進行分組
data.groupby(['reg_date','gender'])['id'].agg('count').head()
reg_date gender
2011/1/1 男 10
2011/1/10 女 6
男 160
2011/1/11 女 15
男 165
Name: id, dtype: int64
# 那我能不能對多個列進行統計呢?現在只對id列進行統計,如果再把age列加進來,可以麼?
# Mr.林:這個同樣可以有,不過如果還是計數的話,對id、age兩列統計的結果是一樣的,我們換成平均值統計試試,輸入以下代碼
# 對多個字段進行分組,多個字段進行聚合運算
data.groupby(['reg_date','gender'])['id','age'].agg('mean').head()
id age
reg_date gender
2011/1/1 男 100008.600000 29.200000
2011/1/10 女 101276.500000 36.333333
男 101295.262500 26.862500
2011/1/11 女 101617.400000 31.400000
男 101590.054545 26.636364
貼上原鏈接:https://mp.weixin.qq.com/s?__biz=MzA5MjcxNDQxNw==&mid=2247487674&idx=1&sn=3c3329e1f5622617980e9885643d5cfa&chksm=9069b464a71e3d724da6f55ba5d865c81cf46a4dcdd680a2d192b5b1cb714f34f66432532cc9&mpshare=1&scene=1&srcid=&sharer_sharetime=1585271535627&sharer_shareid=3177188b879205cdaf204a607a1dda00&key=415a1fbf986a67efb4fdb42c58e5959e630740609eef51b3c681790500b2acc3601f849ef474b1021e53306edf6b03c05a65912706f351e780fffbf6a9b648d047240c262c2e424b9d3dce39120c9ac9&ascene=1&uin=MjMzMTY4OTI2MQ%3D%3D&devicetype=Windows+10&version=62080079&lang=zh_CN&exportkey=Ae%2F2CtKrOsNry2gps40VFRo%3D&pass_ticket=EZTkZeaFj1a52g4%2BXdO4TiQsiMeh7AjS9o%2F9VMevjnaICrYQImAa%2Fwc%2B7PVNPpuM