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命令行参数sys.argv使用示例
Jan 28 Python
Python实现希尔排序算法的原理与用法实例分析
Nov 23 Python
Python pandas常用函数详解
Feb 07 Python
解决python3中解压zip文件是文件名乱码的问题
Mar 22 Python
详解Python if-elif-else知识点
Jun 11 Python
python解析json串与正则匹配对比方法
Dec 20 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
Python pymsql模块的使用
Sep 07 Python
PyCharm中关于安装第三方包的三个建议
Sep 17 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 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 第二节 数据类型之数值型
2012/04/28 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
PHP类的特性实例分析
2016/09/28 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
PHP 图片处理
2020/09/16 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
arguments对象验证函数的参数是否合法
2015/06/26 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
jQuery事件详解
2017/02/23 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
python实现简单爬虫功能的示例
2016/10/24 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
Python Switch Case三种实现方法代码实例
2020/06/18 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
如何写一份好的自荐信
2014/01/02 职场文书
大型活动策划方案
2014/01/12 职场文书
开业典礼主持词
2014/03/21 职场文书
设计师求职信模板
2014/05/06 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
高考励志标语
2014/06/05 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP