微信好友性别分布与签名分析词云图
介绍
我们知道,python有很多支持的第三方库,有些库广泛用于数据分析,例如numpy和pandas,而用于方方面面的第三方库里面,一个比较有趣的库是itchat。
itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。
使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。itchat可以用来做自动回复聊天机器人,并且还可以自动添加好友等等,本次我们只获取好友信息并对其进行分析。
实现
这次我要讲的是利用itchat库来获取好友信息,并主要对其性别和个性签名进行分析。
Ps:主要是因为我的微信好友不多,然后好友城市等信息比较少,就没继续写了,暗示加波微信。
下面是效果图:(好像暴露了什么,emm女性好友少了点,可能解释了我为什么单身)
现在我们开始来实现它把。
环境:
Windows10、Anaconda(Python的IDE)、相关的库(itchat、jieba、WordCloud)如果没有安装Anaconda的请参考我的这篇文章Windows10下安装Anaconda3(64位)详细过程
首先我们打开Jupyter Notebook来新建一个文件,然后输入以下代码来导入库:
import itchat #提供微信接口的库 import jieba.analyse #结巴分词(中文分词) import codecs #编码格式用到的 from wordcloud import WordCloud #词云库 from scipy.misc import imread #读取图片的库 import matplotlib.pyplot as plt #画图的库 import matplotlib.font_manager as fm #加载中文字体的库 myfont=fm.FontProperties(fname='C:\Windows\msyh.ttc')
调用itchat的方法来获取好友的信息:
#登陆方法 hotReload参数设置成True的话第二次登陆只需要在手机上同意登陆就行了,而不需要再次扫码登陆 itchat.auto_login(hotReload=True) #爬取自己好友相关信息,返回一个json格式的信息 friends=itchat.get_friends(update=True)[0:] itchat.logout() #退出登录
观察结构
定义一个方法,用来解析各个变量
#解析数据包括好友昵称 备注 性别 省份 城市 个人简介 点赞数 def get_var(var):variable=[]for friend in friends:value=friend[var]if value=='':value='无'variable.append(value)return variable
调用函数得到各个变量,并转换成字典的格式
NickName=get_var('NickName')#昵称 RemarkName=get_var('RemarkName')#备注名称 Sex=get_var('Sex')#性别 Province=get_var('Province')#省 City=get_var('City')#市 Signature=get_var('Signature')#个性签名 AttrStatus=get_var('AttrStatus')#点赞数 data={'NickName':NickName,'RemarkName':RemarkName,'Sex':Sex,'Province':Province,'City':City,'Signature':Signature,'AttrStatus':AttrStatus}
将数据写入文件
with codecs.open("WeiXin.json","w",encoding='utf-8') as f:f.write(str(data))
分析自己好友的性别比例
#初始化计数器 male=female=other=0 #第一个是自己所以是datas[1:] for sex in data['Sex'][1:]:if sex==1:male+=1elif sex==2:female+=1else:other+=1 #计算朋友总数 total=male+female+other male=float(male)/total*100 female=float(female)/total*100 other=float(other)/total*100#打印出自己的好友的性别比例 print("男性好友:%.2f%%"%(male)) print("女性好友:%.2f%%"%(female)) print("不明性别好友:%.2f%%"%(other))
将数据转化为柱状图,更直观的表现数据的特征
index=[0,1,2] #索引 values=[male,female,other]#值 fig,ax=plt.subplots() #导入简体中文字体,才能正确的显示中文 plt.title('性别分布',fontproperties=myfont) a=ax.bar(0,male,color='r') b=ax.bar(1,female,color='g') c=ax.bar(2,other,color='b') plt.xticks(index,['男','女','未知'],fontproperties=myfont)#添加数据标签 for x in a+b+c:h=x.get_height()ax.text(x.get_x()+x.get_width()/2,h,'%.2f%%'%h,ha='center',va='bottom') plt.show()
将好友的个性签名先通过结巴分词分割,分词后在用wordcloud画出词云图
#TODO个性签名词云图 siglist='' for Signature in data['Signature']:#将签名中的一些不正常的字符去掉Signature=Signature.replace('span','').replace('\r\n','').replace('emoji','')Signature=Signature.replace('class','').replace('"','').replace('无','').replace('< = 1f61e>','')Signature=Signature.replace('< = 1f60c>','').replace('</>','').replace('< = 1f388>','')Signature=Signature.replace('\u3000','').replace('< = 1f4de>️','').replace('< = 1f343>','').replace('< = 2601>','')#结巴分词切割签名siglist += ' '.join(jieba.analyse.extract_tags(Signature,5))#读取背景图片 backgroud_Image = imread('1.png') #设置词云样式 创建WordCloud对象 wc = WordCloud(font_path=r'C:\Windows\msyh.ttc',background_color='white',max_words=2000,mask=backgroud_Image) #将词汇导入 wc.generate(siglist) #将结果存储到图片中 wc.to_file('test2.png')# 显示词云图 plt.figure(figsize=(15,15)) plt.imshow(wc,interpolation='bilinear') # 是否显示x轴、y轴下标 plt.axis('off') plt.show()
附:素材下载链接
总结:
这里我们首先用itchat的方法获得了好友的相关信息,然后对信息进行处理,通过计算或者切割来完成我们的目的,得到性别分布图和好友签名词云图。
当然itchat的功能不只这么一点,下次我会写一个在服务器上面部署微信自动聊天机器人的博客,欢迎大家交流
至此我们就大功告成了
我的个人博客网站是:www.coderyyn.cn
上面会不定期分享有关爬虫、算法、环境搭建以及有趣的帖子
欢迎大家一起交流学习
转载请注明
微信好友性别分布与签名分析词云图相关推荐
- python编写性别比例_Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】...
本文实例讲述了Python分析微信好友性别比例和省份城市分布比例的方法.分享给大家供大家参考,具体如下: 安装itchat pip install itchat 使用 新建wxfx.py,拷贝以下代码 ...
- 用Python获取了微信好友数据,进行可视化分析发现~
大家好! 因为无事可做,就想着看看爬取一下微信好友,然后理智的分析一波~~ 01 数据采集 我们这次使用的是Itchat库来获取的微信好友数据. 01 登陆 用Itchat库来获取微信好友数据,首先需 ...
- 用Python获取了微信好友数据,进行可视化分析发现
大家好! 因为无事可做,就想着看看爬取一下微信好友,然后理智的分析一波~~编程学习资料点击领取 01 数据采集 我们这次使用的是Itchat库来获取的微信好友数据. 01 登陆 用Itchat库来获取 ...
- 爬取微信好友信息,进行可视化分析(头像人脸识别部分已更新!)(代码已上传)
[Code]下载 1.项目说明 本次项目主要实现了以下功能: 2.微信好友信息的获取与文件存储 3.微信好友性别分析 4.微信好友地区分布可视化 5.微信好友个性签名词云图及好友备注词云图 6.微信好 ...
- itchat和php,Python使用itchat 功能分析微信好友性别和位置
这样就将你所有微信好友的信息都返回了,我们并不需要这么多的信息,我们选取一些信息存储到 csv 文件中 注意:返回的信息是一个 list,其中第一个是我自己的信息,所以要从第二项开始 存储的文件 2: ...
- python生成微信好友性别环形图
想知道你的微信好友中男多,还是女多,还是未知性别的多?请看下面的方法. 一, 实现思路: 1,遍历获取微信好友性别,并统计出性别: 2,利用matplotlib生成好友性别饼图: 3,给图添加文字: ...
- Python - 获取微信好友性别比例( Pie )
Counter:计数返回键值的形式 items:将键值对转换为元组 import itchat from collections import Counter from matplotlib impo ...
- 统计微信好友性别,并可视化
''' author: date:20200303 func:统计微信好友性别,并可视化 ''' from pyecharts.charts import Pie import csv from py ...
- Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析
Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析 文章目录 1.词云图简介 2.wordcloud库的安装 3.WordCloud的主要参数说明 4.绘制词 ...
最新文章
- 重磅!2020年度国家杰青、优青填报界面取消“论文收录与被引统计表”
- 柳传志:联想又遇新坎儿 要做斯巴达克方针
- 腾讯安全发布安全托管服务MSS,推动网络安全建设向服务驱动转变
- taylor+swift纽约公寓_国际巨星Taylor Swift有多爱豪宅?才30岁就有8套豪宅
- 容器编排技术 -- 基于Docker本地运行Kubernetes
- (Mark)JS中的上下文
- 第 8 天 多线程与多进程
- 【Linux】常见错误 “cp: omitting directory”解决办法
- cocos2d 传送门
- 三门外语 精通oracle_《精通Oracle SQL(第2版)》PDF 下载
- Java基础入门:IDEA软件安装和软件初始化设置
- 数据分析师常见的7道面试题
- 盘点6个主流的数据分析工具,及优缺点对比
- C语言-数据输入与输出函数
- 在Windows下也可以玩Ghost
- 基于Tempo大数据分析平台的智慧博物馆大数据中心
- 什么形状的蓝牙耳机戴着舒服?长时间佩戴舒服的蓝牙耳机推荐
- 扬帆际海:个人如何做跨境电商
- 五⼤场景玩转 Git,只要这一篇就够了!
- 时代周刊-老牛上封面的那一期