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生成指定长度的随机数密码
Jan 23 Python
Python实现基于HTTP文件传输实例
Nov 08 Python
浅谈Python的异常处理
Jun 19 Python
python爬取各类文档方法归类汇总
Mar 22 Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 Python
儿童学习python的一些小技巧
May 27 Python
python3实现windows下同名进程监控
Jun 21 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
Python读取excel指定列生成指定sql脚本的方法
Nov 28 Python
Python实现FM算法解析
Jun 18 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
python 实现有道翻译功能
Feb 26 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中::、->、self、$this几种操作符的区别介绍
2013/04/24 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
一分钟理解js闭包
2016/05/04 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
python实现汉诺塔递归算法经典案例
2021/03/01 Python
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
一道python走迷宫算法题
2018/01/22 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
python是怎么被发明的
2020/06/15 Python
python怎么删除缓存文件
2020/07/19 Python
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
电子商务专业学生的学习自我评价
2013/10/27 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
销售提升方案
2014/06/07 职场文书
优秀会计求职信
2014/07/04 职场文书
党章学习心得体会2016
2016/01/14 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python
错误码NET::ERR_CERT_DATE_INVALID证书已过期解决方法?
2022/07/07 数码科技