专栏名称: 小蚊子数据分析
数据分析知识、培训、招聘分享。
目录
相关文章推荐
新疆949交通广播  ·  949帮您问|市民反映的这些问题,有回复了! ·  昨天  
新疆949交通广播  ·  紧急声明!“安装”教程销量上千……商家回应亮了 ·  昨天  
新疆949交通广播  ·  降温!降雪!大风!速看全疆天气情况→ ·  2 天前  
新疆949交通广播  ·  登顶!第一! ·  2 天前  
51好读  ›  专栏  ›  小蚊子数据分析

跟小白学Python数据分析——分组分析

小蚊子数据分析  · 公众号  ·  · 2020-03-09 08:55

正文

我们继续使用导入使用的案例数据进行学习,输入以下代码:

1import pandas
2data = pandas.read_csv(
3'D:/D/data.csv',
4 engine='python',
5 encoding='utf8'
6)

Mr.林: 执行后,在变量浏览窗口中就可以看到刚导入的data变量了,双击打开data变量,就可以得到下面这张表


长按识别下方二维码,并关注公众号
回复“
DR ”获取案例数据



先来统计按性别分组的用户数,输入以下代码

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






请到「今天看啥」查看全文