基于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启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
Apr 09 Python
Python字典操作简明总结
Apr 13 Python
python遍历数组的方法小结
Apr 30 Python
Python实现图片转字符画的示例
Aug 22 Python
python八大排序算法速度实例对比
Dec 06 Python
python用户管理系统的实例讲解
Dec 23 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
python sorted方法和列表使用解析
Nov 18 Python
python标准库os库的函数介绍
Feb 12 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
Python获取android设备cpu和内存占用情况
Nov 15 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
Yii隐藏URL中index.php的方法
2016/07/12 PHP
javascript Demo模态窗口
2009/12/06 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
在nodejs中创建child process的方法
2021/01/26 NodeJs
[01:14]3.19DOTA2发布会 三代刀塔人第二代
2014/03/25 DOTA
[10:39]DOTA2上海特级锦标赛音乐会纪录片
2016/03/21 DOTA
Python构造函数及解构函数介绍
2015/02/26 Python
python简单实现基数排序算法
2015/05/16 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
Django之PopUp的具体实现方法
2019/08/31 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
财务管理专业推荐信
2013/11/19 职场文书
毕业生的自我评价
2013/12/30 职场文书
六五普法规划实施方案
2014/03/21 职场文书
材料化学专业求职信
2014/07/15 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
介绍信范文
2015/01/31 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
十个Python自动化常用操作,即拿即用
2021/05/10 Python
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL
Pytorch可视化的几种实现方法
2021/06/10 Python
Windows Server 2012 R2 磁盘分区教程
2022/04/29 Servers