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语言技巧之三元运算符使用介绍
Mar 04 Python
Python实现统计代码行的方法分析
Jul 12 Python
Python 错误和异常代码详解
Jan 29 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
Dec 20 Python
Python面向对象程序设计类的封装与继承用法示例
Apr 12 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
TensorFlow绘制loss/accuracy曲线的实例
Jan 21 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
Sep 28 Python
Python pymysql模块安装并操作过程解析
Oct 13 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函数的方法
2013/11/13 PHP
Laravel下生成验证码的类
2017/11/15 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
为Yahoo! UI Extensions Grid增加内置的可编辑器
2007/03/10 Javascript
jquery下json数组的操作实现代码
2010/08/09 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
jQuery匹配文档链接并添加class的方法
2015/06/26 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
python下载文件记录黑名单的实现代码
2017/10/24 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
PyQt5实现拖放功能
2018/04/25 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
Python中的 enum 模块源码详析
2019/01/09 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
在django中自定义字段Field详解
2019/12/03 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
python和php哪个容易学
2020/06/19 Python
python实现视频压缩功能
2020/12/18 Python
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
sort命令的作用和用法
2013/08/25 面试题
保密工作责任书
2014/04/16 职场文书
财务管理制度范本
2015/08/04 职场文书
运动会广播稿200字
2015/08/19 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle