用 Python 分析微信好友性别比例

0 前言

上一次是用 python 实现聊天机器人,其中提及到 itchat 这个包,使用了一下,发现挺好玩的,找了相关的代码看了一下,发现可以用来分析微信好友性别比例,于是就玩起来了。

1 环境说明

Win10 系统下 Python3,编译器是 Pycharm,需要安装 itchat、matplotlib、collections 这3个包。

这里只介绍 Pycharm 安装第三方包的方法。

2 相关代码

2.1 饼图

先是导入包

import itchat
import matplotlib.pyplot as plt
from collections import Counter

接着就是用 itchat 登录微信,获取数据

itchat.auto_login(hotReload=True)
friends = itchat.get_friends(update=True)

然后就是主要的代码

sexs = list(map(lambda x: x['Sex'], friends[1:]))
counts = list(map(lambda x: x[1], Counter(sexs).items()))
labels = ['Unknow','Male',   'Female']
colors = ['red', 'yellowgreen', 'lightskyblue']
plt.figure(figsize=(8, 5), dpi=80)
plt.axes(aspect=1)
plt.pie(counts,  # 性别统计结果
        labels=labels,  # 性别展示标签
        colors=colors,  # 饼图区域配色
        labeldistance=1.1,  # 标签距离圆点距离
        autopct='%3.1f%%',  # 饼图区域文本格式
        shadow=False,  # 饼图是否显示阴影
        startangle=90,  # 饼图起始角度
        pctdistance=0.6  # 饼图区域文本距离圆点距离
)
plt.legend(loc='upper right',)
plt.title('%s的微信好友性别组成' % friends[0]['NickName'])
plt.show()

把代码复制到 pycharm,然后直接鼠标右键,选择 "Run" , 过一会儿,屏幕就会弹出一个二维码,扫描二维码,在手机上确认登录,然后等一会儿就好了。

这个过程中不要在手机上退出登录,也不要在别的地方登录网页版微信,然后就可以看见这样的图了。

2.2 柱状图

一样,先是导入包

import itchat
import matplotlib.pyplot as plt

然后是用 itchat 登录微信

itchat.auto_login(hotReload=True)
friends = itchat.get_friends(update=True)

接下来就是统计好友信息,先把所有性别的个数赋值为0,然后开始一个个计算

male = 0
female = 0
other = 0
# friends[0]是自己的信息,因此我们要从[1:]开始
for i in friends[1:]:
    sex = i['Sex']  # 注意大小写,2 是女性, 1 是男性
    if sex == 1:
        male += 1
    elif sex == 2:
        female += 1
    else:
        other += 1
total = len(friends[1:])  # 计算好友总数
print('好友总数:', total)
print('男性比例:%2f%%' % (float(male) / total * 100))
print('女性比例:%2f%%' % (float(female) / total * 100))
print('未知性别:%2f%%' % (float(other) / total * 100))

然后我们用 matplotlib 画图, x轴是性别、 y轴是性别、 标题是性别分析。

plt.xlabel("sex")  # x轴是性别
plt.ylabel('number')  # y轴是性别
plt.title('sex analysis')  # 标题是性别分析
arr = ['male'] * male  # 男性
arr1 = ['female']*female  # 女性
arr2 = ['unknow'] * other    # 未知
arr.extend(arr1)
arr.extend(arr2)
plt.hist(arr)
plt.show()

运行代码,扫描二维码,登录网页版微信,等一会就可以看见类似下面的图了。

具体数据如下

柱状图如下

3 相关说明

代码直接复制到 pycharm 里面就可以了,按照顺序来,不要打乱顺序。

itchat 的项目主页:https://github.com/littlecodersh/itchat

itchat 的说明文档:http://itchat.readthedocs.io/zh/latest/

饼图的原文链接:https://qinyuanpei.github.io/posts/2805694118/

柱状图的原文链接:http://blog.csdn.net/Lee20093905/article/details/79052795

题图:Photo by GoaShape on Unsplash

本文分享自微信公众号 - 萧北月(beiyue_lbj)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-03-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT派

微软拥抱Python:Anaconda现已包含Visual Studio Code

IT派 - {技术青年圈} 持续关注互联网、区块链、人工智能领域 微软近日在官方博客宣布,已与与Anaconda达成合作,微软免费和跨平台代码编辑器 Vis...

45750
来自专栏量子位

Python超过R,成为数据科学和机器学习的最常用语言

陈桦 编译自 KDnuggets 量子位 报道 | 公众号 QbitAI ? 近期,数据挖掘资讯网站KDnuggets开展了一项调查,问题是“2016年和201...

35680
来自专栏IT派

Python家族全家福,看你到底有多少熟人?

包管理 管理包和依赖的工具。 pip – Python 包和依赖关系管理工具。 pip-tools – 保证 Python 包依赖关系更新的一组工具。 cond...

80150
来自专栏IT派

人民日报整版报道区块链,我只想知道用什么语言开发?

IT派 - {技术青年圈} 持续关注互联网、区块链、人工智能领域 2月26日,《人民日报》经济版头条整版刊发了区块链署名评论文章《三问区块链》《抓住区块链这...

1.6K60
来自专栏IT派

Python下载网易云音乐厉害? 骚操作竟能撩妹!!

IT派 - {技术青年圈} 持续关注互联网、区块链、人工智能领域 大家都知道python很火 而且这把火已经烧到了互联网圈子外了 小学生要学Python,高...

53960
来自专栏IT派

【程序员必看】如何用Python创建一个区块链?

IT派 - {技术青年圈} 持续关注互联网、区块链、人工智能领域 小编认为最快的学习区块链的方式是自己创建一个,本文就用Python来创建一个区块链。 对数...

45270
来自专栏AI研习社

Github 项目推荐 | 可提取结构化信息的自然语言理解 Python 库 Snips NLU

Snips NLU 是一个用于自然语言理解的 Python 库,它可以解析用自然语言书写的句子,同时抽取出结构化信息。 该库支持 Snips Console 使...

49060
来自专栏量子位

基于达尔文进化论的遗传算法,还能帮你破解同事的密码?| 附代码

李林 编译自 SICARA blog 量子位 出品 | 公众号 QbitAI 量子位今天编译整理的这篇文章,全面地介绍了遗传算法(genetic algorit...

41160
来自专栏IT派

全球大数据调查:编程始于少年,Python 成为最爱

IT派 - {技术青年圈} 持续关注互联网、区块链、人工智能领域 近年来,随着互联网时代的不断发展,互联网+概念的不断扩张,我们的工作正在不断发生改变,掌握...

37560
来自专栏IT派

2017年12月编程语言排名榜发布,Python稳坐前四

IT派 - {技术青年圈} 持续关注互联网、大数据、人工智能领域 TIOBE 快要宣布“2017 年度编程语言”得主,而 Kotlin 和 C 语言目前成...

44860

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励