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使用pil生成缩略图的方法
Mar 26 Python
在RedHat系Linux上部署Python的Celery框架的教程
Apr 07 Python
python如何对实例属性进行类型检查
Mar 20 Python
Python爬虫小技巧之伪造随机的User-Agent
Sep 13 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
Python处理时间日期坐标轴过程详解
Jun 25 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
python实现静态服务器
Sep 05 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
matplotlib实现数据实时刷新的示例代码
Jan 05 Python
Golang Web 框架Iris安装部署
Aug 14 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
用户的详细注册和判断
2006/10/09 PHP
基于mysql的bbs设计(一)
2006/10/09 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
js同源策略详解
2015/05/21 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
python简单读取大文件的方法
2016/07/01 Python
python 计算一个字符串中所有数字的和实例
2019/06/11 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
linux环境下Django的安装配置详解
2019/07/22 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
C++和python实现阿姆斯特朗数字查找实例代码
2020/12/07 Python
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
如何进行Linux分区优化
2013/02/12 面试题
Python文件操作的面试题
2013/06/22 面试题
招聘与培训专员岗位职责
2014/01/30 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
学前班评语大全
2014/05/04 职场文书
综治工作心得体会
2014/09/11 职场文书
财务个人年度总结范文
2015/02/26 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
如何撰写促销方案?
2019/07/05 职场文书
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL