1. 程式人生 > 程式設計 >基於python實現微信好友資料分析(簡單)

基於python實現微信好友資料分析(簡單)

一、功能介紹

本文主要介紹利用網頁端微信獲取資料,實現個人微信好友資料的獲取,並進行一些簡單的資料分析,功能包括:

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,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實現微信好友資料分析,希望對大家有所幫助!