微信好友数据分析

一、所需安装库

* itchat:微信网页版接口封装Python版本,在本文中用以获取微信好友信息。
* jieba:结巴分词的 Python 版本,在本文中用以对文本信息进行分词处理。
* matplotlib: Python 中图表绘制模块,在本文中用以绘制柱形图和饼图
* snownlp:一个 Python 中的中文分词模块,在本文中用以对文本信息进行情感判断。
* PIL: Python 中的图像处理模块,在本文中用以对图片进行处理。
* numpy: Python中 的数值计算模块,在本文中配合 wordcloud 模块使用。
* wordcloud: Python 中的词云模块,在本文中用以绘制词云图片。
* pyecharts:生成可视化的地图
以上模块均可通过 pip 安装,关于各个模块使用的详细说明,请自行查阅各自文档。

二、依赖库介绍

以上任务需要依赖以下七个库,下面分别介绍如下,具体的安装见第三部分。
1.Pillow
1.Pillow
PIL:PythonImagingLibrary,已经是Python平台事实上的图像处理标准库了。PIL
功能非常强大,但API却非常简单易用。由于PIL仅支持到Python2.7,加上年久失修,
于是一群志愿者在PIL的基础上创建了兼容的版本,
名字叫Pillow,
支持最新Python3.x,
又加入了许多新特性,因此,我们可以直接安装使用Pillow。
Pillow
Pillow教程
教程:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014
320027235877860c87af5544f25a8deeb55141d60c5000
2.Pyecharts
2.Pyecharts
Echarts是一个开源的数据可视化JS库,好多人不习惯用JavaScript,所以有人开发
了pyecharts。pyecharts是一个生成Echarts图表的python类库。在使用pyecharts时,
首先需要安装pyechats类库。
Echarts
Echarts教程
教程:
:http://echarts.baidu.com/examples/
Pycharts
Pycharts教程
教程:https://github.com/pyecharts/pyecharts/
3.Itchat
3.Itchat
itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。
Itchat
Itchat教程
教程:https://itchat.readthedocs.io/zh/latest/
4.Jieba
4.Jieba
jieba是优秀的中文分词库,中文文本需要通过分词来获的单个词语。jieba库提供了
三种分词模式:精确模式,全模式,搜索引擎模式。精确模式是将文本精确割分,不存在
冗余。全模式是将文本中所有可能单词都扫描出来,存在冗余。搜索引擎模式是将经过精
确模式分割下的长词在进行分割。
jeba库的优点
1、支持三种分词模式:
a.精确模式,试图将句子最精确地切开,适合文本分析;
b.全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决
歧义;
c.搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜
索引擎分词。
2支持自定义词典
Jieba
Jieba教程
教程:https://github.com/fxsjy/jieba
5.Numpy
5.Numpy
NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩
阵,比Python自身的嵌套列表(nestedliststructure)结构要高效的多(该结构也可以
用来表示矩阵matrix)

Numpy
Numpy教程
教程:https://docs.scipy.org/doc/numpy/user/quickstart.html
Numpy
Numpy中文文档
中文文档:https://www.numpy.org.cn/index.html
6.Pandas
6.Pandas
pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas
纳入了大量库和一些标准的数据模型,
提供了高效地操作大型数据集所需的工具。
pandas提
供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成
为强大而高效的数据分析环境的重要因素之一。
Pandas
Pandas文档
文档:https://pandas.pydata.org/pandas-docs/stable/visualization.html
7.
7.wxpy
wxpy
wxpy在itchat的基础上,
通过大量接口优化提升了模块的易用性,
并进行丰富的功能
扩展。
https://wxpy.readthedocs.io/zh/latest/bot.html#id2

三、基本功能

① 分析微信好友数据

② 生成词云图

③ 生成地图展示

四、运行代码

from wxpy import*
bot=Bot(cache_path=True)
friend_all=bot.friends()

运行代码后会跳出二维码,打开手机扫描同意后,进入微信页面获取好友信息

接下来是统计好友个数

 

然后呢制作列表将好友列表保存到excel中,以便后面的使用

lis=[]
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)
    list_0=[NickName,Sex,City,Province,Signature,HeadImgUrl,HeadImgFlag]
    lis.append(list_0)
def lis2e07(filename,lis):
    import openpyxl
    wb=openpyxl.Workbook()
    sheet=wb.active
    sheet.title='list2excel07'
    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("写入数据成功")

接下来在运行中敲下代码

lis2e07('yubgl',lis)

就会跳出:写入数据成功!

接下来就在保存的文件位置中找到yubgl.xlsx

对好友数据进行分析

最后制作词云

 完整代码是这样的

from wxpy import * 
 
#初始化机器人,选择缓存模式(扫码)登录 
bot = Bot(cache_path=True) 
 
#获取我的所有微信好友信息 
friend_all = bot.friends() 
print(friend_all[0].raw)
len(friend_all)
lis=[]
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) 
    list_0=[NickName,Sex,City,Province,Signature,HeadImgUrl,HeadImgFlag] 
    lis.append(list_0) 
    
    
    
    
def lis2e07(filename,lis): 
    import openpyxl 
    wb = openpyxl.Workbook() 
    sheet = wb.active 
    sheet.title = 'list2excel07' 
    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("写入数据成功!") 
    
    
#lis2e07('wx',lis)
Friends = bot.friends() 
data = Friends.stats_text(total=True, sex=True,top_provinces=2, top_cities=3) 
print(data)
from pandas import read_excel  
df = read_excel('yubgl.xlsx',sheetname='list2excel07')  
df.tail(5) 
df['city'].count()
df['city'].describe()
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import pandas as pd 
from pandas import DataFrame 
word_list= df['city'].fillna('0').tolist()
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() 

到这就结束了哦

posted @ 2019-06-06 00:37  ysd将暮未暮  阅读(569)  评论(0编辑  收藏  举报