用 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
- 100个Numpy练习【2】
- 浅谈 maxMemory , totalMemory , freeMemory 和 OOM 与 native Heap
- 100个Numpy练习【1】
- XGoServer 一个基础性、模块完整且安全可靠的服务端框架
- Bing 每日一图 & 随机图片 API
- 可视化数据库MapD安装——GPU模式
- 12步轻松搞定Python装饰器
- 使用shell脚本检测数据库连接访问情况(r10笔记第98天)
- 贝叶斯分类器及Python实现
- Docker 简介与安装
- 三种决策树算法(ID3, CART, C4.5)及Python实现
- Logistic 回归算法及Python实现
- MySQL主从不一致的修复过程(r10笔记第96天)
- ML中相似性度量和距离的计算&Python实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java--注解
- 如何在 Ubuntu 20.04 上安装 Jenkins
- 在 Linux 下如何检查内存使用率
- 3分钟短文 | MySQL存时间,到底该用timestamp还是datetime?
- js中class的继承的基础用法
- JavaScript 设计模式学习总结与感悟(开发&面试必备)
- 3分钟短文 | PHP多维数组搜索值,就只能for循环?这样写更高效
- 如何获得tomcat管理员账号
- ant target间的dependency
- 如何用ant将JSP项目打成war包
- 3分钟短文 | MySQL备份和迁移sql文件,这个指令基础又关键
- 如何用ant给Java项目生成文档
- ant build里如何指定classpath
- Tomcat服务器java.lang.IllegalArgumentException异常
- 动态控制SAP CRM附件的可编辑性