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