一直就想着做个微信好友数据分析,折腾了一天总算是勉强完成了。
本文参考:
微信好友大数据分析
Python基于jieba库进行简单分词及词云功能实现方法
本文会使用到的第三方模块:

  • itchat:微信网页版接口封装Python版本,在本文中用以获取微信好友信息。
  • jieba:结巴分词的 Python 版本,在本文中用以对文本信息进行分词处理。
  • matplotlib: Python 中图表绘制模块,在本文中用以绘制柱形图和饼图
  • PIL: Python 中的图像处理模块,在本文中用以对图片进行处理。
  • wordcloud: Python 中的词云模块,在本文中用以绘制词云图片。

首先是安装相应的包,我用的是Anaconda3中的spyder,用cmd进入到Anaconda文件下的Scripts文件夹,输入命令pip install itchat,等待安装成功。

导入相关包,运行程序弹出二维码,扫描登录微信,显示连接成功即可

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import itchat
#弹出二维码,登录自己的微信
itchat.login()

获取好友相关数据,保存到变量friends内
仔细观察了一下返回的数据结构,发现”性别“是存放在一个字典里面的,key是”Sex“,男性值为1,女性为2,其他是不明性别的。可以写个循环获取性别数据,得到自己微信好友的性别比例

friends = itchat.get_friends(update=True)[0:]
#初始化计数器
male = female = other = 0
for i in friends[1:]:sex = i['Sex']if sex == 1:male += 1elif sex == 2:female += 1else:other += 1
#查看好友总数
total = len(friends[1:])

分析微信好友男女比例情况并绘制柱状图

print('男性好友:%.2f%%' % (float(male)/total*100))
print('女性好友:%.2f%%' % (float(female)/total*100))
print('不明性别好友:%.2f%%' % (float(other)/total*100))label_name = ['Boy','Girl','Unknow']
gender_list = [male,female,other]
plt.figure(figsize=(8,4))
colors = ['yellowgreen','red','lightskyblue']
plt.bar(range(len(gender_list)),gender_list,tick_label=label_name,color=colors)
plt.grid()
plt.xlabel('性别')
plt.ylabel('人数')
plt.show()
x = np.arange(3)
y = np.array(gender_list)
for a,b in zip(x,y):plt.text(a,b+0.1,b,ha='center',va='bottom',fontsize=12)

从图中可以看出微信好友男女比例人差的不是很多,主要我微信人数太少了,这数据说明不了啥,但是仔细一想主要是上了大学才玩的微信,多数好友为自己学院的同学,加上学院男女比例均衡,所以我好友中男女比例没有失调。


定义函数,获取好友指定的信息并转换成DataFrame

#定义函数,获取好友的其他信息
def get_var(var):variable = []for i in friends[1:]:value = i[var]variable.append(value)return variable
NickName = get_var('NickName') #昵称
Sex = get_var('Sex') #性别
Province = get_var('Province') #省份
City = get_var('City') #城市
Signature = get_var('Signature')   #个性签名#转化成DataFrame
data = pd.DataFrame({'NickName':NickName,'Sex':Sex,'Province':Province,'Signature':Signature})

接下来对好友的城市分布进行分析

#统计好友的城市分布
city_dict = {}
x_city = []
y_city = []
for city_name in City:if city_name in  city_dict:city_dict[city_name] += 1else:city_dict[city_name] = 1
city_list = sorted(city_dict.items(),key=lambda item:item[1],reverse=True)for i in city_list[1:10]:x_city.append(i[0])y_city.append(i[1])plt.figure()
plt.bar(range(len(x_city)),y_city,tick_label=x_city)
plt.grid()
plt.title('微信好友城市分布')
x = np.arange(len(x_city))
y = np.array(y_city)
for i,j in zip(x,y):plt.text(i,j+0.1,j,ha='center',va='bottom',fontsize=9)

从图中可以看出好友的城市分布,排名第一的赣州正是自己家乡,第二的九江是自己所在学校,第三的珠海是由于暑假工时期交的朋友,这个图一出来有些记忆就比较清晰的浮现在脑海了,如果随着微信的继续使用,这些好友的城市分布数据也可以反映出自己成长的轨迹图。

接下来就是制作自己微信好友个性签名的自定义词云图

#根据个性签名绘制词云图
import re
Signature_list = []
for i in friends:signature = i['Signature'].strip().replace('span','').replace('class','').replace('emoji','').replace('""','')rep = re.compile('1f\d+\w*|[<>/=]')signature = rep.sub('',signature)Signature_list.append(signature)
text = ''.join(Signature_list)import jieba
wordlist = jieba.cut(text, cut_all=False)
words =' '
for word in wordlist:words = words + word + ' '
print(words)from wordcloud import WordCloud,ImageColorGenerator
import PIL.Image as Image
coloring = np.array(Image.open('C:\\Users\\Administrator\\Desktop\\微信朋友数据分析\\wangye.jpg'))
my_wordcloud = WordCloud(background_color='white',max_words=200,mask=coloring,max_font_size=80,random_state=42,scale=2,width=960,height=720,                         font_path='C:\\Windows\\Fonts\\SimHei.ttf')
my_wordcloud.generate(words)
image_colors = ImageColorGenerator(coloring)
plt.figure()
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis('off')
plt.show()
说明:
首先对好友的个性签名进行数据清洗,用正则表达式去掉一些干扰符号,接着导入jieba包对中文句子进行分词,用空格将所有分词隔开,输出查看分词结果,可以得到好友个性签名里的所有词语,最后进行词云的绘制

从词云图中可以看出我微信朋友里基本都是积极向上的,最显眼的词语比如努力、自己、人生(life)、学习等。感觉凑起来就是自己在生活中只有努力学习才能活出人生的精彩,当然有的朋友会有遗憾,比如辜负,无法弥补等词语。其实吧人生都是一个不断前进的过程,没必要抓住过去不放,好好珍惜当下才是。还有姑娘和宝宝两个显示的词语,这大概是girl的一些心路历程,从被人疼爱的宝宝逐渐变成了独立的姑娘。


附上背景图片

利用Python对微信好友数据进行分析相关推荐

  1. 利用python进行微信好友分析

    欢迎python爱好者加入:学习交流群 667279387 本文主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,py ...

  2. 用python做头像_如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  3. python表白代码照片墙-如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  4. 利用python做微信聊天记录词云分析——记录美好回忆

    目录 1 概述 2 数据准备 2.1 安卓设备 2.1.1 Root手机,安装Root Explorer 2.1.2 用Root Explorer将聊天记录的数据文件导出并存入电脑 2.1.3 对En ...

  5. 利用Python查看微信好友撤回的消息

    效果图如下: 不仅可以查看微信好友撤回的文字消息,如位置.视频.音频.图片等等都可以查看. 直接上源代码: # Python查看微信撤回消息 import re import os import ti ...

  6. 利用python进行prosper贷款数据EDA分析(一)

    一 摘要 本文详述了如何通过数据预览,基本数据分析.探索式数据分析,缺失数据填补等方法,实现对 kaggle上Prosper借贷平台贷款者还款与否这一分类问题如何进行数据分析的具体探索式实践. 二 项 ...

  7. python 获取微信好友数据

    若itchat.wxpy无法使用,替代方案: https://github.com/smallevilbeast/wechat_pc_api 感谢大佬,已Start! 从上述网址下载相关dll和dem ...

  8. 【微信】利用python实现微信好友防撤回、消息监控

    该项目来源于github,将其跑通: # -*- coding: utf-8 -*- """ Created on Fri Jun 21 12:09:43 2019@au ...

  9. 通过python分析微信好友数据

    随着微信的普及,越来越多的人开始使用微信.微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信.微信里的每一个好友,都代表着人们在社会里扮演的不同角色.今天这篇 ...

最新文章

  1. python中文开发环境_Eclipse搭建Python开发环境+Python中文处理
  2. GridView合并列下的行单元格的方法
  3. C# WPF:初识布局容器
  4. 使用StarUML生成live555类图
  5. tpc-c 服务器性能,IBM创英特尔8处理器服务器TPC-C性能记录
  6. 前端框架——Jquery——基础篇7__工具函数(Utils)
  7. 年假计算器在线_死亡计算器 和 年龄计算器
  8. 1.LVS 安装简介
  9. 全文搜索工具 AnyTXT Searcher(转载)
  10. Mysql触发器与事务
  11. Java关于继承中的内存分配
  12. SQLyog使用技巧
  13. Anaconda配置OpenCV
  14. Python中Pygame的安装过程
  15. Android adb shell启动应用程序的方法
  16. 2020 年 9 月程序员平均工资 14469 元,你拖后腿了没?
  17. isbn书号查询php代码,eoLinker-API Shop ISBN书号查询 PHP调用示例代码
  18. layer进度条ajax,layui动态进度条详细。
  19. 抖音直播运营分析:深入解读直播带货运营那些专业术语
  20. IEEE754详解(最详细简单有趣味的介绍)

热门文章

  1. 安装反射大师具体步骤与使用教程
  2. python电商项目-首页广告展示
  3. 一文,教你打造员工生命周期解决方案
  4. (详解)矩阵快速幂详解与常见转移矩阵的构造
  5. 学习笔记——GB/T 34960.5-2018 信息技术服务 治理 第5部分:数据治理规范
  6. 写给计算机老师的一封信800,给老师的一封信800字(精选6篇)
  7. 个人认为比较好的网站及其简介和网址
  8. c语言求近似值程序,c语言求pi的近似值_C语言求PI的近似值 求高人指点
  9. 数据结构与算法(C语言)
  10. 壁纸图片网站收集 2020