介绍

  • 我们知道,python有很多支持的第三方库,有些库广泛用于数据分析,例如numpypandas,而用于方方面面的第三方库里面,一个比较有趣的库是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
上面会不定期分享有关爬虫、算法、环境搭建以及有趣的帖子
欢迎大家一起交流学习

转载请注明

微信好友性别分布与签名分析词云图相关推荐

  1. python编写性别比例_Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】...

    本文实例讲述了Python分析微信好友性别比例和省份城市分布比例的方法.分享给大家供大家参考,具体如下: 安装itchat pip install itchat 使用 新建wxfx.py,拷贝以下代码 ...

  2. 用Python获取了微信好友数据,进行可视化分析发现~

    大家好! 因为无事可做,就想着看看爬取一下微信好友,然后理智的分析一波~~ 01 数据采集 我们这次使用的是Itchat库来获取的微信好友数据. 01 登陆 用Itchat库来获取微信好友数据,首先需 ...

  3. 用Python获取了微信好友数据,进行可视化分析发现

    大家好! 因为无事可做,就想着看看爬取一下微信好友,然后理智的分析一波~~编程学习资料点击领取 01 数据采集 我们这次使用的是Itchat库来获取的微信好友数据. 01 登陆 用Itchat库来获取 ...

  4. 爬取微信好友信息,进行可视化分析(头像人脸识别部分已更新!)(代码已上传)

    [Code]下载 1.项目说明 本次项目主要实现了以下功能: 2.微信好友信息的获取与文件存储 3.微信好友性别分析 4.微信好友地区分布可视化 5.微信好友个性签名词云图及好友备注词云图 6.微信好 ...

  5. itchat和php,Python使用itchat 功能分析微信好友性别和位置

    这样就将你所有微信好友的信息都返回了,我们并不需要这么多的信息,我们选取一些信息存储到 csv 文件中 注意:返回的信息是一个 list,其中第一个是我自己的信息,所以要从第二项开始 存储的文件 2: ...

  6. python生成微信好友性别环形图

    想知道你的微信好友中男多,还是女多,还是未知性别的多?请看下面的方法. 一, 实现思路: 1,遍历获取微信好友性别,并统计出性别: 2,利用matplotlib生成好友性别饼图: 3,给图添加文字: ...

  7. Python - 获取微信好友性别比例( Pie )

    Counter:计数返回键值的形式 items:将键值对转换为元组 import itchat from collections import Counter from matplotlib impo ...

  8. 统计微信好友性别,并可视化

    ''' author: date:20200303 func:统计微信好友性别,并可视化 ''' from pyecharts.charts import Pie import csv from py ...

  9. Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析

    Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析 文章目录 1.词云图简介 2.wordcloud库的安装 3.WordCloud的主要参数说明 4.绘制词 ...

最新文章

  1. 重磅!2020年度国家杰青、优青填报界面取消“论文收录与被引统计表”
  2. 柳传志:联想又遇新坎儿 要做斯巴达克方针
  3. 腾讯安全发布安全托管服务MSS,推动网络安全建设向服务驱动转变
  4. taylor+swift纽约公寓_国际巨星Taylor Swift有多爱豪宅?才30岁就有8套豪宅
  5. 容器编排技术 -- 基于Docker本地运行Kubernetes
  6. (Mark)JS中的上下文
  7. 第 8 天 多线程与多进程
  8. 【Linux】常见错误 “cp: omitting directory”解决办法
  9. cocos2d 传送门
  10. 三门外语 精通oracle_《精通Oracle SQL(第2版)》PDF 下载
  11. Java基础入门:IDEA软件安装和软件初始化设置
  12. 数据分析师常见的7道面试题
  13. 盘点6个主流的数据分析工具,及优缺点对比
  14. C语言-数据输入与输出函数
  15. 在Windows下也可以玩Ghost
  16. 基于Tempo大数据分析平台的智慧博物馆大数据中心
  17. 什么形状的蓝牙耳机戴着舒服?长时间佩戴舒服的蓝牙耳机推荐
  18. 扬帆际海:个人如何做跨境电商
  19. 五⼤场景玩转 Git,只要这一篇就够了!
  20. 时代周刊-老牛上封面的那一期

热门文章

  1. java实战——简单的媒体播放器
  2. 05丨指标关系:你知道并发用户数应该怎么算吗?
  3. python turtle库制作可爱的假向日葵
  4. 真爱趁现在电视剧全集在线观看 html,真爱趁现在
  5. Google首席软件工程师Joshua Bloch谈如何设计一款优秀的API
  6. linux7没有ifconfig,CentOS 7 没有ifconfig新的替换命令ip
  7. 关于网站漏洞的案例和解决思路
  8. String s=new String(xback)和String s=xback的区别?
  9. 无人机在精准农业中的研究综述
  10. 实现简易HTTP服务器