微信好友數據分析

1、所需安裝庫html

* itchat:微信網頁版接口封裝Python版本,在本文中用以獲取微信好友信息。
* jieba:結巴分詞的 Python 版本,在本文中用以對文本信息進行分詞處理。
* matplotlib: Python 中圖表繪製模塊,在本文中用以繪製柱形圖和餅圖
* snownlp:一個 Python 中的中文分詞模塊,在本文中用以對文本信息進行情感判斷。
* PIL: Python 中的圖像處理模塊,在本文中用以對圖片進行處理。
* numpy: Python中 的數值計算模塊,在本文中配合 wordcloud 模塊使用。
* wordcloud: Python 中的詞雲模塊,在本文中用以繪製詞雲圖片。
* pyecharts:生成可視化的地圖
以上模塊都可經過 pip 安裝,關於各個模塊使用的詳細說明,請自行查閱各自文檔。python

2、依賴庫介紹git

以上任務須要依賴如下七個庫,下面分別介紹以下,具體的安裝見第三部分。
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庫的優勢
一、支持三種分詞模式:
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

3、基本功能

① 分析微信好友數據github

② 生成詞雲圖緩存

③ 生成地圖展現微信

4、運行代碼app

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

運行代碼後會跳出二維碼,打開手機掃描贊成後,進入微信頁面獲取好友信息echarts

接下來是統計好友個數函數

 

而後呢製做列表將好友列表保存到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() 

到這就結束了哦

相關文章
相關標籤/搜索