基于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 相关文章推荐
用PyQt进行Python图形界面的程序的开发的入门指引
Apr 14 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
Apr 06 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 Python
简单了解python反射机制的一些知识
Jul 13 Python
python实现简单成绩录入系统
Sep 19 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
Apr 24 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
May 26 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
python 实现Harris角点检测算法
Dec 11 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
十个Python自动化常用操作,即拿即用
May 10 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
getimagesize获取图片尺寸实例
2014/11/15 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
微信小程序实现页面浮动导航
2019/01/28 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
python浪漫表白源码
2019/04/05 Python
基于Python函数和变量名解析
2019/07/19 Python
Python中url标签使用知识点总结
2020/01/16 Python
在TensorFlow中屏蔽warning的方式
2020/02/04 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
购买大码女装:Lane Bryant
2016/09/07 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
计算机工程学院个人求职信
2013/10/05 职场文书
入党申请人的自我鉴定
2013/12/01 职场文书
机关节能减排实施方案
2014/03/17 职场文书
项目安全员岗位职责
2015/02/15 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang