小白: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”获取案例数据