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函数式编程
Jun 09 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 Python
python实现二维数组的对角线遍历
Mar 02 Python
浅谈Python中eval的强大与危害
Mar 13 Python
django celery redis使用具体实践
Apr 08 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
python pandas模块基础学习详解
Jul 03 Python
django2.2安装错误最全的解决方案(小结)
Sep 24 Python
Django自定义全局403、404、500错误页面的示例代码
Mar 08 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
深入浅析pycharm中 Make available to all projects的含义
Sep 15 Python
Python collections.deque双边队列原理详解
Oct 05 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
PHP4实际应用经验篇(4)
2006/10/09 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
2014/04/24 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
php实现微信公众号无限群发
2015/10/11 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
JavaScript 快捷键设置实现代码
2009/03/13 Javascript
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
python多线程抓取天涯帖子内容示例
2014/04/03 Python
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
2020/03/09 Python
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
幼儿教师考核制度
2014/01/25 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
导师评语大全
2014/04/26 职场文书
工地质量标语
2014/06/12 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
「约定的梦幻岛」作画发布诺曼生日新绘
2022/03/21 日漫