前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10分钟教你用Python玩转微信之好友性别比例统计分析

10分钟教你用Python玩转微信之好友性别比例统计分析

作者头像
用户1621951
发布2019-10-18 15:47:05
9910
发布2019-10-18 15:47:05
举报
文章被收录于专栏:数据魔术师数据魔术师

以下文章来源于程序猿声,作者短短的路走走停停

前言

想必,微信对于大家来说,是再熟悉不过的了。那么,大家想不想探索一下微信上的各种奥秘呢?今天,我们一起来简单分析一下微信上的好友性别比例吧~废话不多说,开始干活。

结果如下:

环境准备

Python版本:3.6.0

系统平台:Windows 10 X64

IDE:pycharm

相关模块:

matplotlib.pyplot模块;

itchat模块;

以及一些Python自带的模块。

好友统计

这里还是需要用到我们的itchat模块,利用这个模块登录微信,然后获取相应的信息进行统计分析。

首先是登录微信,获取好友:

代码语言:javascript
复制
1 # 先登录
2 itchat.login()
3 
4 # 获取好友列表
5 friends = itchat.get_friends(update=True)[0:]

然后是遍历获取结果,进行性别统计:

代码语言:javascript
复制
 1 # 初始化计数器,有男有女,当然,有些人是不填的
 2 male = female = other = 0
 3
 4 # 遍历这个列表,列表里第一位是自己,所以从"自己"之后开始计算
 5 # 1表示男性,2女性
 6 for i in friends[1:]:
 7     sex = i["Sex"]
 8     if sex == 1:
 9         male += 1
10     elif sex == 2:
11         female += 1
12     else:
13         other += 1
14 
15 # 总数算上,好计算比例啊~
16 total = len(friends[1:])

最后输出结果:

代码语言:javascript
复制
1 # 好了,打印结果
2 print("男性好友:%.2f%%" % (float(male) / total * 100))
3 print("女性好友:%.2f%%" % (float(female) / total * 100))
4 print("其他:%.2f%%" % (float(other) / total * 100))

那,这就完了吗?不!

绘制统计图

为了结果好看一点,我们再下点功夫,利用matplotlib下的pyplot将统计的结果绘制成统计图,让数据变得更加直观。

matplotlib是python上的一个2D绘图库,它可以在跨平台上画出很多高质量的图像。综旨就是让简单的事变得更简单,让复杂的事变得可能。我们可以用matplotlib生成 绘图、直方图、功率谱、柱状图、误差图、散点图等 。

matplotlib.pyplot:提供一个类似matlab的绘图框架。有关其相关知识,这里就不过多介绍了,大家可上网自行了解一下,我们这里用到的代码也很简单,注释也说得很清楚了:

代码语言:javascript
复制
1 # 颜色
2 colors = ['yellowgreen', 'lightskyblue', 'lightcoral']
3 # 标签
4 labels = ['other', 'male', 'female']
5 # 控制让哪个块向外一点(这里选的是中间的那个男性)
6 explode = (0, 0.1, 0)
7 plt.pie([other, male, female], labels=labels, explode=explode, colors=colors, autopct='%1.1f%%')
8 plt.show()

将相关设置设置好以后,就把饼状图show出来就可以啦。

完整代码

具体的完整代码如下:

代码语言:javascript
复制
 1 import matplotlib.pyplot as plt
 2 import itchat
 3 
 4 # 先登录
 5 itchat.login()
 6 
 7 # 获取好友列表
 8 friends = itchat.get_friends(update=True)[0:]
 9 
10 # 初始化计数器,有男有女,当然,有些人是不填的
11 male = female = other = 0
12 
13 # 遍历这个列表,列表里第一位是自己,所以从"自己"之后开始计算
14 # 1表示男性,2女性
15 for i in friends[1:]:
16     sex = i["Sex"]
17     if sex == 1:
18         male += 1
19     elif sex == 2:
20         female += 1
21     else:
22         other += 1
23
24 # 总数算上,好计算比例啊~
25 total = len(friends[1:])
26 
27 # 好了,打印结果
28 print("男性好友:%.2f%%" % (float(male) / total * 100))
29 print("女性好友:%.2f%%" % (float(female) / total * 100))
30 print("其他:%.2f%%" % (float(other) / total * 100))
31 
32 # 颜色
33 colors = ['yellowgreen', 'lightskyblue', 'lightcoral']
34 # 标签
35 labels = ['other', 'male', 'female']
36 # 控制让哪个块向外一点(这里选的是中间的那个男性)
37 explode = (0, 0.1, 0)
38 plt.pie([other, male, female], labels=labels, explode=explode, colors=colors, autopct='%1.1f%%')
39 plt.show()

---The End---

文案 && 编辑:邓发珩

审稿 && 测试: 张映婷

如对文中内容有疑问,欢迎交流。PS:部分资料来自网络。

如有需求,可以联系:

邓发珩 (华中科技大学管理学院本科二年级:2638512393@qq.com、个人公众号:程序猿声)

张映婷 (华中科技大学管理学院本科三年级 1185835411@qq.com)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据魔术师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档