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素数检测的方法
May 11 Python
Python回调函数用法实例详解
Jul 02 Python
Python中条件判断语句的简单使用方法
Aug 21 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
May 10 Python
python 函数中的参数类型
Feb 11 Python
tensorflow 实现数据类型转换
Feb 17 Python
pycharm运行程序时看不到任何结果显示的解决
Feb 21 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 Python
python如何处理程序无法打开
Jun 16 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 Python
Python实现猜拳与猜数字游戏的方法详解
Apr 06 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
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
javascript打印输出json实例
2013/11/11 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
深入了解Python数据类型之列表
2016/06/24 Python
python实现简单登陆流程的方法
2018/04/22 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
Python实现结构体代码实例
2020/02/10 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
Python实现简单猜数字游戏
2021/02/03 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
宾馆仓管员岗位职责
2014/07/27 职场文书
公司租房协议书
2014/10/14 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
销售会议开幕词
2015/01/28 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书