Python利用itchat对微信中好友数据实现简单分析的方法


Posted in Python onNovember 21, 2017

前言

最近在一个微信公众号上看到一个调用微信 API 可以对微信好友进行简单数据分析的一个包 itchat 感觉挺好用的,就简单尝试了一下。

库文档说明链接在这: itchat

安装

在终端中输入以下命令,完成微信的API包itchat的安装。

我们这里使用python3的环境(python2也是可行的):

sudo pip3 install itchat --upgrade

通过该命令判断是否安装成功:

python3 -c "import itchat"

如果没有报错信息说明你已经将实验环境安装完成。

Python利用itchat对微信中好友数据实现简单分析的方法

微信好友数据进行分析示例

首先统计一下微信好友的男女比例:

#coding:utf-8
import itchat
# 先登录
itchat.login()
# 获取好友列表
friends = itchat.get_friends(update=True)[0:]
# 初始化计数器,有男有女,当然,有些人是不填的
male = female = other = 0
# 遍历这个列表,列表里第一位是自己,所以从"自己"之后开始计算# 1表示男性,2女性
for i in friends[1:]:
 sex = i["Sex"]
 if sex == 1:
 male += 1
 elif sex == 2:
 female += 1
 else:
 other += 1
 # 总数算上,好计算比例啊~
 total = len(friends[1:])
 # 好了,打印结果

print (u"男性好友:%.2f%%" % (float(male) / total * 100))
print (u"女性好友:%.2f%%" % (float(female) / total * 100))
print (u"其他:%.2f%%" % (float(other) / total * 100))


# 使用echarts,加上这段
from echarts import Echart, Legend, Pie
chart = Echart(u'%s的微信好友性别比例' % (friends[0]['NickName']), 'from WeChat')
chart.use(Pie('WeChat',[{'value': male, 'name': u'男性 %.2f%%' % (float(male) / total * 100)},{'value': female, 'name': u'女性 %.2f%%' % (float(female) / total * 100)},{'value': other, 'name': u'其他 %.2f%%' % (float(other) / total * 100)}],radius=["50%", "70%"]))
chart.use(Legend(["male", "female", "other"]))
del chart.json["xAxis"]
del chart.json["yAxis"]
chart.plot()
chart.save("/Library","phones")

效果如图:(不知道为什么还有那么多 其他。。。)

Python利用itchat对微信中好友数据实现简单分析的方法

然后抓取所有好友的个性签名,看看其中的高频词汇:

# coding:utf-8
import itchat
import re
itchat.login()
friends = itchat.get_friends(update=True)[0:]
tList = []
for i in friends:
 signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")
 rep = re.compile("1f\d.+")
 signature = rep.sub("", signature)
 tList.append(signature)
 # 拼接字符串
 text = "".join(tList)
# jieba分词
import jieba
wordlist_jieba = jieba.cut(text, cut_all=True)
wl_space_split = " ".join(wordlist_jieba)
# wordcloud词云
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import os
import numpy as np
import PIL.Image as Image
d= os.path.dirname(__file__)
alice_coloring = np.array(Image.open(os.path.join(d, "wechat.jpg")))
my_wordcloud = WordCloud(background_color="white", max_words=2000,mask=alice_coloring,max_font_size=40, random_state=42,font_path='/Users/sebastian/Library/Fonts/Arial Unicode.ttf').generate(wl_space_split)
image_colors = ImageColorGenerator(alice_coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
# 保存图片 并发送到手机
my_wordcloud.to_file(os.path.join(d, "wechat_cloud.png"))
itchat.send_image("wechat_cloud.png", 'filehelper')

效果如图:

Python利用itchat对微信中好友数据实现简单分析的方法

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
使用grappelli为django admin后台添加模板
Nov 18 Python
多版本Python共存的配置方法
May 22 Python
requests和lxml实现爬虫的方法
Jun 11 Python
Python Flask-web表单使用详解
Nov 18 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
python scp 批量同步文件的实现方法
Jan 03 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
Python3中的最大整数和最大浮点数实例
Jul 09 Python
Django 1.10以上版本 url 配置注意事项详解
Aug 05 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 Python
如何理解python对象
Jun 21 Python
Django 权限管理(permissions)与用户组(group)详解
Nov 30 Python
python中is与双等于号“==”的区别示例详解
Nov 21 #Python
Python使用PIL模块生成随机验证码
Nov 21 #Python
Python3中条件控制、循环与函数的简易教程
Nov 21 #Python
Python3 循环语句(for、while、break、range等)
Nov 20 #Python
Python虚拟环境项目实例
Nov 20 #Python
Python插件virtualenv搭建虚拟环境
Nov 20 #Python
使用tensorflow实现AlexNet
Nov 20 #Python
You might like
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
php+highchats生成动态统计图
2014/05/21 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
vue2.0在table中实现全选和反选的示例代码
2017/11/04 Javascript
分析JS单线程异步io回调的特性
2017/12/01 Javascript
node.js的Express服务器基本使用教程
2019/01/09 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
Python实现句子翻译功能
2017/11/14 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
python实现AES加密和解密
2019/03/27 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
python 怎样进行内存管理
2020/11/10 Python
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
精伦电子Java笔试题
2013/01/16 面试题
自我鉴定的范文
2013/10/03 职场文书
最热门的自我评价
2013/12/30 职场文书
《草原》教学反思
2014/02/15 职场文书
大学生评语大全
2014/04/18 职场文书
软件项目开发计划书
2014/05/01 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书
2015年酒店工作总结
2015/04/28 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
Java线程的6种状态与生命周期
2022/05/11 Java/Android