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 06 Python
Python pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
python中print的不换行即时输出的快速解决方法
Jul 20 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
Oct 15 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
Feb 12 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
python实现图片中文字分割效果
Jul 22 Python
Python超越函数积分运算以及绘图实现代码
Nov 20 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
Jan 16 Python
Python优秀开源项目Rich源码解析的流程分析
Jul 06 Python
anaconda3安装及jupyter环境配置全教程
Aug 24 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
AM/FM收音机的安装与调试
2021/03/02 无线电
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
PHP CURL模拟GET及POST函数代码
2010/04/25 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
asp.net中oracle 存储过程(图文)
2015/08/12 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
web打印小结
2017/01/11 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
python读取word文档的方法
2015/05/09 Python
Python lxml模块安装教程
2015/06/02 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
python 实现方阵的对角线遍历示例
2019/11/29 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
pandas处理csv文件的方法步骤
2020/10/16 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
空字符串(“”)和null的区别
2012/11/13 面试题
公司培训心得体会
2014/01/03 职场文书
实习单位接收函模板
2014/01/10 职场文书
父母对孩子的寄语
2014/04/09 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
新学期开学寄语2016
2015/12/04 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书