基于python实现微信好友数据分析(简单)


Posted in Python onFebruary 16, 2020

一、功能介绍

本文主要介绍利用网页端微信获取数据,实现个人微信好友数据的获取,并进行一些简单的数据分析,功能包括:

1.爬取好友列表,显示好友昵称、性别和地域和签名, 文件保存为 xlsx 格式

2.统计好友的地域分布,并且做成词云和可视化展示在地图上

二、依赖库

1、Pyecharts:一个用于生成echarts图表的类库,echarts是百度开源的一个数据可视化库,用echarts生成的图可视化效果非常棒,使用pyechart库可以在python中生成echarts数据图。

2、Itchat:一个开源的微信个人号接口,使用python调用微信从未如此简单。

3、Jieba:简单的分词操作库。

4、Numpy:NumPy 系统是 Python 的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩 阵。

5、Pandas:pandas 是基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

6、Pillow:图像处理。

7、wxpy:wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能 扩展。 (微信本身提供)

注:Pyecharts可能安装0.5.*的版本比较好

以上的三方库可以通过命令符(cmd)来实现安装,具体命令:pip install ***

三,操作

from wxpy import *   #导入模块
 bot = Bot(cache_path=True) #初始化机器人,选择扫码登录
 friend_all = bot.friends() #获取微信好友信息

首先出现的是一张二维码,然后扫描登录

基于python实现微信好友数据分析(简单)

成功登录好了就是这种显示

基于python实现微信好友数据分析(简单)

之后就可以进行操作了,好友数量,个人信息

print(len(friend_all)) #好友的数量
 print(friend_all[0].raw) #输出个人信息

显示的结果

基于python实现微信好友数据分析(简单)

四、接下来把全部的好友信息转化为一个xlsx文件

获取全部好友信息

for a_friend in friend_all:
 NickName = a_friend.raw.get('NickName', None)
 #昵称
 #Sex = a_friend.raw.get('Sex', None)
 Sex = {1: "男", 2: "女", 0: "其它"}.get(a_friend.raw.get('Sex', None), None)
 #性别(优化)
 City = a_friend.raw.get('City', None)
 #城市
 Province = a_friend.raw.get('Province', None)
 #省份
 Signature = a_friend.raw.get('Signature', None)
 #个性签名
 HeadImgUrl = a_friend.raw.get('HeadImgUrl', None)
 #头像地址
 HeadImgFlag = a_friend.raw.get('HeadImgFlag', None)
 #小Flag
 list_0=[NickName, Sex, City, Province, Signature, HeadImgUrl, HeadImgFlag]
 #存为一维数组
 lis.append(list_0)
 #叠加数据

存为xlsx文件

def list_excel(filename,lis):
 '''
 将列表写入excel中,其中列表中的元素是列表.
 filename:保存的文件名(含路径)
 lis:元素为列表的列表,如下:
 lis = [["名称", "价格", "出版社", "语言"],
 ["暗时间", "32.4", "人民邮电出版社", "中文"],
 ["拆掉思维里的墙", "26.7", "机械工业出版社", "中文"]]
 '''
 import openpyxl
 wb = openpyxl.Workbook() #激活worksheet
 sheet = wb.active
 sheet.title = 'sheet1'  #创建一个表格
 file_name = filename +'.xlsx'
 for i in range(0, len(lis)):
  for j in range(0, len(lis[i])):
   sheet.cell(row=i+1, column=j+1, value=str(lis[i][j]))
   #每行每列的存入数据
 wb.save(file_name)
 print("写入数据成功!")
list_excel('wechat',lis)

效果如下:

基于python实现微信好友数据分析(简单)

可以看到其好友基本分布再广东省,个性签名也是非常的杀马特

五、实现词云图(我们也可以从存储在本地的 excel 中读取数据进行分析,并查看数据形式。在执行以 下代码之前,我们需要先把 excel 文件加一个列标题行)

例如nickname sex city province signature headImgUrl headImgFlag

#导入模块
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame
word_list= df['city'].fillna('0').tolist()
#将 dataframe 的列转化为 list,其中的 nan 用“0”替换
new_text = ' '.join(word_list)
wordcloud = WordCloud(font_path='simhei.ttf', background_color="black").generate(new_text)
#设计图背景颜色,字体
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

基于python实现微信好友数据分析(简单)

还可以将词云图存为HTML形式

#利用 pyechart 做词云
import pandas as pd
#count = df.city.value_counts() #对 dataframe 进行全频率统计,排除了 nan
city_list = df['city'].fillna('NAN').tolist()#将 dataframe 的列转化为 list,其中的 nan 用“NAN” 替换
count_city = pd.value_counts(city_list)#对 list 进行全频率统计 
from pyecharts.charts.wordcloud import WordCloud #设置对象
name = count_city.index.tolist()
value = count_city.tolist()
wordcloud = WordCloud(width=1300, height=620)
wordcloud.add("", name, value, word_size_range=[20, 100])
wordcloud.show_config()
wordcloud.render(r'D:\python\wechatcloud.html')

再看看效果:

基于python实现微信好友数据分析(简单)

六、转化为地图形式

注:安装地图数据包:pip install echarts-china-provinces-pypkg pip install echarts-countries-pypkg

province_list = df['province'].fillna('NAN').tolist()
#将 dataframe 的列转化为 list,其中的 nan 用 “NAN”替换
count_province = pd.value_counts(province_list)
#对 list 进行全频率统计

from pyecharts import Map
value =count_province.tolist()
attr =count_province.index.tolist()
map=Map("各省微信好友分布", width=1300, height=700)
map.add("", attr, value, maptype='china', is_visualmap=True,visual_text_color='#000',is_label_show = True)
#显示地图上的省份
map.show_config()
map.render(r'D:\python\wechatProMap.html')

效果:

基于python实现微信好友数据分析(简单)

总结

以上所述是小编给大家介绍的基于python实现微信好友数据分析,希望对大家有所帮助!

Python 相关文章推荐
Python实现遍历windows所有窗口并输出窗口标题的方法
Mar 13 Python
Python实现的破解字符串找茬游戏算法示例
Sep 25 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
Feb 08 Python
python开启摄像头以及深度学习实现目标检测方法
Aug 03 Python
Python发展简史 Python来历
May 14 Python
selenium+python环境配置教程详解
May 28 Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
Django如何使用redis作为缓存
May 21 Python
Python优秀开源项目Rich源码解析的流程分析
Jul 06 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
Feb 16 #Python
python中的 zip函数详解及用法举例
Feb 16 #Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 #Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 #Python
使用Tensorboard工具查看Loss损失率
Feb 15 #Python
Keras使用tensorboard显示训练过程的实例
Feb 15 #Python
Python利用逻辑回归分类实现模板
Feb 15 #Python
You might like
php循环输出数据库内容的代码
2008/05/24 PHP
php程序之die调试法 快速解决错误
2009/09/17 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
用cssText批量修改样式
2009/08/29 Javascript
类似CSDN图片切换效果脚本
2009/09/17 Javascript
JavaScript 语法集锦 脚本之家基础推荐
2009/11/15 Javascript
javascript Demo模态窗口
2009/12/06 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
详解javascript高级定时器
2015/12/31 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
python绘制随机网络图形示例
2019/11/21 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
专科应届生求职信
2013/11/24 职场文书
大学生英语演讲稿
2014/04/24 职场文书
家长会标语
2014/06/24 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
股东授权委托书
2014/10/15 职场文书
助学金感谢信
2015/01/20 职场文书
交通事故起诉书
2015/05/19 职场文书
千手观音观后感
2015/06/03 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python
pandas数值排序的实现实例
2021/07/25 Python
python数字类型和占位符详情
2022/03/13 Python