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 相关文章推荐
python实现排序算法
Feb 14 Python
Linux 发邮件磁盘空间监控(python)
Apr 23 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
Jul 03 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
keras获得某一层或者某层权重的输出实例
Jan 24 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
flask框架中的cookie和session使用
Jan 31 Python
Python数据分析入门之教你怎么搭建环境
May 13 Python
分享7个 Python 实战项目练习
Mar 03 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 5.0 Pear安装方法
2006/12/06 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
2012/11/20 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
详解node child_process模块学习笔记
2018/01/24 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
Python中操作mysql的pymysql模块详解
2016/09/13 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
python3.6数独问题的解决
2019/01/21 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
Apache部署Django项目图文详解
2019/07/30 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
会计主管岗位职责范文
2013/11/08 职场文书
六查六看自查材料
2014/02/17 职场文书
拉歌口号大全
2014/06/13 职场文书
史上最牛的辞职信
2015/02/28 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
给领导敬酒词
2015/08/12 职场文书
三好学生竞选稿
2015/11/21 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js