社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

小蚊子数据分析 • 4 年前 • 459 次点击  

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

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  30.562500
11          男       102153.694611  27.101796
122011/1/14 女       102461.153846   32.384615
13          男       102482.067010  26.974227
14.........................

小白:太棒了,我还有个疑问,groupby那里跟后面id、age的中括号是什么意思呀?

Mr.林:中括号代表列表的意思,下次再详细告诉你,今天就到这,小白你回去要多多练习,多敲代码。


如果你喜欢本文,可以点击右下角在看
如果你在跟着学习,请在留言区留言:打卡
如果你刚看到本文,可以查看本系列历史文章跟着学习:
跟小白学Python数据分析——Anaconda安装
跟小白学Python数据分析——使用spyder
跟小白学Python数据分析——数据导入1
跟小白学Python数据分析——数据导入2
跟小白学Python数据分析——描述性统计分析
-----------------

希望系统、快速学习Python数据分析知识,可以学习

数据分析专家@文彤老师

跟文彤老师学Python数据分析》系列视频课程

包含以下三门课程

Python数据分析--玩转Pandas

玩转Python统计分析

Python数据分析--玩转数据可视化

如有问题也可添加课程助理微信号咨询,添加时请注明咨询课程

参加课程学习,可享受6折优惠

购买课程直接点击文末“阅读原文”进入即可

  

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55982
 
459 次点击