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定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
Python使用ntplib库同步校准当地时间的方法
Jul 02 Python
详解Python中的文件操作
Aug 28 Python
Python Tkinter实现简易计算器功能
Jan 30 Python
Python中安装easy_install的方法
Nov 18 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
Python之pymysql的使用小结
Jul 01 Python
Pytorch evaluation每次运行结果不同的解决
Jan 02 Python
解决TensorFlow模型恢复报错的问题
Feb 06 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
Windows下Sqlmap环境安装教程详解
Aug 04 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
Home Coffee Roasting
2021/03/03 咖啡文化
PHP 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
PHP的变量总结 新手推荐
2011/04/18 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
jquery 插件开发 extjs中的extend用法小结
2013/01/04 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
基于vue hash模式微信分享#号的解决
2020/09/07 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
python中enumerate的用法实例解析
2014/08/18 Python
Python双向循环链表实现方法分析
2018/07/30 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
html5弹跳球示例代码
2013/07/23 HTML / CSS
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
书香校园建设方案
2014/05/02 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
2014年物资管理工作总结
2014/12/02 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书