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 网络编程起步(Socket发送消息)
Sep 06 Python
python构造icmp echo请求和实现网络探测器功能代码分享
Jan 10 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
Mar 26 Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 Python
pycharm修改文件的默认打开方式的步骤
Jul 29 Python
基于Python中isfile函数和isdir函数使用详解
Nov 29 Python
Python+opencv+pyaudio实现带声音屏幕录制
Dec 23 Python
python numpy 矩阵堆叠实例
Jan 17 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
Jun 29 Python
python时间time模块处理大全
Oct 25 Python
python中编写函数并调用的知识点总结
Jan 13 Python
再谈python_tkinter弹出对话框创建
Mar 20 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
Zerg基本策略
2020/03/14 星际争霸
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
php 修改密码实现代码
2017/05/24 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
React Native验证码倒计时工具类分享
2017/10/24 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
Python正则表达式匹配HTML页面编码
2015/04/08 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
Python中实现switch功能实例解析
2018/01/11 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
基于python实现操作git过程代码解析
2020/07/27 Python
Python字符串三种格式化输出
2020/09/17 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
建筑毕业生自我鉴定
2013/10/18 职场文书
歌颂祖国演讲稿
2014/05/04 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
党员证明模板
2015/06/19 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
技术入股合作协议书
2016/03/21 职场文书
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL