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 MD5文件生成码
Jan 12 Python
Python实现一个简单的MySQL类
Jan 07 Python
使用Python脚本对Linux服务器进行监控的教程
Apr 02 Python
Python下使用Psyco模块优化运行速度
Apr 05 Python
python计算对角线有理函数插值的方法
May 07 Python
Python 基础知识之字符串处理
Jan 06 Python
Python线性方程组求解运算示例
Jan 17 Python
Python日志模块logging基本用法分析
Aug 23 Python
Python3分析处理声音数据的例子
Aug 27 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
python numpy中multiply与*及matul 的区别说明
May 26 Python
Python实现批量自动整理文件
Mar 16 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
3
2006/10/09 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
javascript getElementsByName()的用法说明
2009/07/31 Javascript
Ext.MessageBox工具类简介
2009/12/10 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
创先争优活动承诺书
2014/08/30 职场文书
委托书怎样写
2014/08/30 职场文书
求职导师推荐信范文
2015/03/27 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
七一晚会主持词
2015/06/29 职场文书
三十年同学聚会感言
2015/07/30 职场文书
安全教育的主题班会
2015/08/13 职场文书
安全生产学习心得体会
2016/01/18 职场文书
导游词之吉林吉塔
2019/11/11 职场文书