想必,微信对于大家来说,是再熟悉不过的了。那么,大家想不想探索一下微信上的各种奥秘呢?今天,我们一起来简单分析一下微信上的好友性别比例吧~废话不多说,开始干活。
结果如下:
环境准备
Python版本:3.6.0
系统平台:Windows 10 X64
IDE:pycharm
相关模块:
matplotlib.pyplot模块;
itchat模块;
以及一些Python自带的模块。
好友统计
代码文件下载请移步留言区。
这里还是需要用到我们的itchat模块,利用这个模块登录微信,然后获取相应的信息进行统计分析。
首先是登录微信,获取好友:
1# 先登录 2itchat.login() 3 4# 获取好友列表 5friends = itchat.get_friends(update=True)[0:]
然后是遍历获取结果,进行性别统计:
1# 初始化计数器,有男有女,当然,有些人是不填的 2male = female = other = 0 3 4# 遍历这个列表,列表里第一位是自己,所以从"自己"之后开始计算 5# 1表示男性,2女性 6for 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# 总数算上,好计算比例啊~ 16total = len(friends[1:])
最后输出结果:
1# 好了,打印结果 2print("男性好友:%.2f%%" % (float(male) / total * 100)) 3print("女性好友:%.2f%%" % (float(female) / total * 100)) 4print("其他:%.2f%%" % (float(other) / total * 100))
那,这就完了吗?不!
绘制统计图
代码文件下载请移步留言区。
为了结果好看一点,我们再下点功夫,利用matplotlib下的pyplot将统计的结果绘制成统计图,让数据变得更加直观。
matplotlib是python上的一个2D绘图库,它可以在夸平台上边出很多高质量的图像。综旨就是让简单的事变得更简单,让复杂的事变得可能。我们可以用matplotlib生成 绘图、直方图、功率谱、柱状图、误差图、散点图等 。
matplotlib.pyplot:提供一个类似matlab的绘图框架。有关其相关知识,这里就不过多介绍了,大家可上网自行了解一下,我们这里用到的代码也很简单,注释也说得很清楚了:
1# 颜色 2colors = ['yellowgreen', 'lightskyblue', 'lightcoral'] 3# 标签 4labels = ['other', 'male', 'female'] 5# 控制让哪个块向外一点(这里选的是中间的那个男性) 6explode = (0, 0.1, 0) 7plt.pie([other, male, female], labels=labels, explode=explode, colors=colors, autopct='%1.1f%%') 8plt.show()
将相关设置设置好以后,就把饼状图show出来就可以啦。
完整代码
代码文件下载请移步留言区。
具体的完整代码如下:
1import matplotlib.pyplot as plt 2import itchat 3 4# 先登录 5itchat.login() 6 7# 获取好友列表 8friends = itchat.get_friends(update=True)[0:] 9 10# 初始化计数器,有男有女,当然,有些人是不填的 11male = female = other = 0 12 13# 遍历这个列表,列表里第一位是自己,所以从"自己"之后开始计算 14# 1表示男性,2女性 15for 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# 总数算上,好计算比例啊~ 25total = len(friends[1:]) 26 27# 好了,打印结果 28print("男性好友:%.2f%%" % (float(male) / total * 100)) 29print("女性好友:%.2f%%" % (float(female) / total * 100)) 30print("其他:%.2f%%" % (float(other) / total * 100)) 31 32# 颜色 33colors = ['yellowgreen', 'lightskyblue', 'lightcoral'] 34# 标签 35labels = ['other', 'male', 'female'] 36# 控制让哪个块向外一点(这里选的是中间的那个男性) 37explode = (0, 0.1, 0) 38plt.pie([other, male, female], labels=labels, explode=explode, colors=colors, autopct='%1.1f%%') 39plt.show()