欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用 python 進行微信好友信息分析

 更新時間:2020年11月28日 09:44:10   作者:步平凡  
這篇文章主要介紹了用 python 進行微信好友信息分析的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

1. 使用到的庫

① wxpy:初始化微信機器人

② openpyxl:保存微信好友數(shù)據(jù)為Excel表格

③ pyecharts:生成可視化的地圖

④ wordcloud、matplotlib、jieba:生成詞云圖

【特別提醒】:pyecharts 庫用的是0.5.x版本,而在 pip 中安裝的為1.x.x版本,因此需要自行到【官網(wǎng)】中下載。

2. 基本功能

① 分析微信好友數(shù)據(jù)

② 生成詞云圖

③ 生成地圖展示

3. 代碼實現(xiàn)

此處使用類來實現(xiàn)

(1) 導(dǎo)入模塊

# 導(dǎo)入模塊
from wxpy import Bot
import openpyxl
from pyecharts import Map
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba

(2) 初始化機器人和獲取微信好友的源信息

此處調(diào)用 Bot() 方法,需要掃碼登陸微信網(wǎng)頁版,后續(xù)操作才能進行。

def __init__(self, ToExcelFile="", ToCityFile="", ToMapProvinceFile="", ToMapCityFile=""):
  ''' 初始化機器人和其他參數(shù) '''
  # 初始化機器人,需要掃碼
  self.bot = Bot()
  # 獲取我所有的微信好友信息 - 存儲基礎(chǔ)信息(未處理)
  self.allFriends_Info = self.bot.friends()
  # 我的微信好友個數(shù)
  self.allFriends_Num = len(self.allFriends_Info)
  # 保存微信好友信息的表格文件路徑(.xlsx)
  self.ExcelFile = ToExcelFile
  # 保存城市詞云圖的文件路徑(.png/.jpg)
  self.WCOfCityFile = ToCityFile
  # 保存省份地圖的文件路徑(.html)
  self.MapProvinceFile = ToMapProvinceFile
  # 其他可用參數(shù)
  self.MapCityFile = ToMapCityFile
  # 自動調(diào)用run方法,使得在實例化對象后自動運行其他函數(shù)
  self.run()

(3) 統(tǒng)計和處理微信好友的信息

除了列出的還有 個性簽名、頭像等其他屬性。

def getFriendsInfo(self):
  ''' 獲取微信好友的全部信息 '''
  # 存儲微信好友的信息(經(jīng)過信息處理的)
  self.friendsInfo = []
  # 定義列標題
  self.infoTitle = ['NickName', 'RemarkName', 'Sex', 'Province', 'City']
  for aFriend in self.allFriends_Info:
    # 獲取昵稱
    NickName = aFriend.raw.get(self.infoTitle[0], None)
    # 獲取備注
    RemarkName = aFriend.raw.get(self.infoTitle[1], None)
    # 獲取性別
    Sex = {1:"男", 2:"女", 0:"其他"}.get(aFriend.raw.get(self.infoTitle[2], None), None)
    # 獲取省份
    Province = aFriend.raw.get(self.infoTitle[3], None)
    # 獲取城市
    City = aFriend.raw.get(self.infoTitle[4], None)
    lisTmp = [NickName, RemarkName, Sex, Province, City]
    self.friendsInfo.append(lisTmp)

(4) 保存微信好友的信息

在這保存為Excel表格,在代碼中插入表頭行,為了便于閱讀。

def saveFriendsInfoAsExcel(self, ExcelName):
  ''' 保存微信好友的信息到 Excel 表格中 '''
  # 生成openpyxl對象
  workbook = openpyxl.Workbook()
  # 激活表格
  sheet = workbook.active
  # 設(shè)置表格標題
  sheet.title = 'WeChatFriendsInfo'
  # 填充列標題到第一行
  for _ in range(len(self.infoTitle)):
    sheet.cell(row=1, column=_+1, value=self.infoTitle[_])
  # 填充微信好友信息,從第二行開始
  for i in range(self.allFriends_Num):
    for j in range(len(self.infoTitle)):
      sheet.cell(row=i+2, column=j+1, value=str(self.friendsInfo[i][j]))
  # 若文件名非空,則保存到該路徑下
  if ExcelName != "":
    workbook.save(ExcelName)
    print(">>> Save WeChat friends' information successfully!")

(5) 分析微信好友的信息

 def quiteAnalyzeFriendsInfo(self):
   ''' 分析數(shù)據(jù),一步到位,直接了當 '''
   print(self.allFriends_Info.stats_text())

(6) 生成city詞云圖

def creatWordCloudOfCity(self, CityName):
  ''' 使用獲取的數(shù)據(jù)生成city詞云圖 '''
  # 獲取所有的城市
  cityStr = ""
  for i in range(self.allFriends_Num):
    if self.friendsInfo[i][4] not in cityStr:
      cityStr += " " + self.friendsInfo[i][4]
  #jieba庫精確模式分詞
  wordlist = jieba.lcut(cityStr)
  cityStr = ' '.join(wordlist)
  # 加載背景圖片
  #cloud_mask = np.array(Image.open(BackGroundFile))
  #設(shè)置詞云圖屬性
  font = r'C:\Windows\Fonts\simfang.ttf' # 設(shè)置字體路徑
  wc = WordCloud(
    background_color = 'black',   # 背景顏色
    #mask = cloud_mask,       # 背景圖片
    max_words = 100,        # 設(shè)置最大顯示的詞云數(shù)
    font_path = font,        # 設(shè)置字體形式(在本機系統(tǒng)中)
    height = 300,          # 圖片高度
    width = 600,          # 圖片寬度
    max_font_size = 100,      # 字體最大值
    random_state = 100,       # 配色方案的種類
    )
  # 生成詞云圖
  myword = wc.generate(cityStr)
  #展示詞云圖
  plt.imshow(myword)
  plt.axis('off')
  plt.show()
  # 若文件名非空,則保存到該路徑下
  if CityName != "":
    #保存詞云圖
    wc.to_file(CityName)
    print(">>> Creat WeChat wordcloud of city successfully!")

(7) 生成province地圖

def creatMapProvince(self, MapFile):
  ''' 使用獲取的數(shù)據(jù)生成province地圖 '''
  # 獲取所有省份
  provinceList, provinceNum = [], []
  for i in range(self.allFriends_Num):
    if self.friendsInfo[i][3] not in provinceList:
      provinceList.append(self.friendsInfo[i][3])
      provinceNum.append(0)
  for i in range(self.allFriends_Num):
    for j in range(len(provinceList)):
      if self.friendsInfo[i][3] == provinceList[j]:
        provinceNum[j] += 1
  # 生成 Map
  map = Map("各省微信好友分布", width=1000, height=800)
  map.add("", provinceList, provinceNum, maptype="china", is_visualmap=True, visual_text_color='#000')
  # 若文件名非空,則保存到該路徑下
  if MapFile != "":
    map.render(MapFile)
    print(">>> Creat WeChat Map of Provinces seccessfully!")

(8) 生成city地圖

def creatMapCity(self, MapFile):
    ''' 使用獲取的數(shù)據(jù)生成city地圖 '''
    # 獲取所有省份
    CityList, CityNum = [], []
    for i in range(self.allFriends_Num):
      if self.friendsInfo[i][4] not in CityList:
        CityList.append(self.friendsInfo[i][4])
        CityNum.append(0)
    for i in range(self.allFriends_Num):
      for j in range(len(CityList)):
        if self.friendsInfo[i][4] == CityList[j]:
          CityNum[j] += 1
    for i in range(len(CityList)):
      CityList[i] += '市'
    # 生成 Map
    map = Map("各市微信好友分布", width=1000, height=800)
    map.add("", CityList, CityNum, maptype="廣東", is_visualmap=True, visual_text_color='#000')
    # 若文件名非空,則保存到該路徑下
    if MapFile != "":
      map.render(MapFile)
      print(">>> Creat WeChat Map of Cities seccessfully!")

有了上述實現(xiàn)各個功能的方法,那么就差一個調(diào)用各種方法的方法了。

(9) run方法

def run(self):
  # 獲取微信好友信息
  self.getFriendsInfo()
  print(">>> Get WeChat friends' information successfully!")
  print(">>> Members:", self.allFriends_Num)
  # 保存微信好友信息
  self.saveFriendsInfoAsExcel(self.ExcelFile)
  # 分析微信好友信息
  self.quiteAnalyzeFriendsInfo()
  # 使用微信好友的 city 產(chǎn)生詞云圖
  self.creatWordCloudOfCity(self.WCOfCityFile)
  # 生成微信好友的 province 地圖
  self.creatMapProvince(self.MapProvinceFile)
  # 生成微信好友的 city 地圖
  self.creatMapCity(self.MapCityFile)

對于文件路徑,在main函數(shù)中傳遞即可?!咀ⅰ浚荷鲜龃a都在類中,在此處結(jié)束,下面為main函數(shù)

if __name__ == "__main__":
  ToExcelFile = "./WeChatAnalyze//FriendsInfo.xlsx"   # 微信好友信息的Excel表格保存路徑
  ToPictureFile = "./WeChatAnalyze//CityWordCloud.png"  # 微信好友信息city詞云圖保存路徑
  ToMapFileProvince = "./WeChatAnalyze//WeChatProvinceMap.html" # 微信好友信息province地圖保存路徑
  ToMapFileCity = "./WeChatAnalyze//WeChatCityMap.html" # 微信好友信息city地圖保存路徑
  # WeChatRobot對象實例化
  robot = WeChatRobot(ToExcelFile, ToPictureFile, ToMapFileProvince, ToMapFileCity)

是不是覺得Main函數(shù)很簡短,哈哈,沒錯,就是這么簡!

接下來看看實現(xiàn)的效果吧!

>>> 這個是終端顯示效果

>>> 這個是保存為Excel表格的內(nèi)容

 >>> 這個是微信好友各省的分布

>>> 這個是微信好友各市的分布

完整代碼

# -*- coding: utf-8 -*-
'''
This is a program which can analyze datas of WeChat friends.
@author: bpf
'''

# 導(dǎo)入模塊
from wxpy import Bot
import openpyxl
from pyecharts import Map
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba

class WeChatRobot:

  '''====================== 1. 獲取微信好友信息 ======================'''
  def __init__(self, ToExcelFile="", ToCityFile="", ToMapProvinceFile="", ToMapCityFile=""):
    ''' 初始化機器人和其他參數(shù) '''
    # 初始化機器人,需要掃碼
    self.bot = Bot()
    # 獲取我所有的微信好友信息 - 存儲基礎(chǔ)信息(未處理)
    self.allFriends_Info = self.bot.friends()
    # 我的微信好友個數(shù)
    self.allFriends_Num = len(self.allFriends_Info)
    # 保存微信好友信息的表格文件路徑(.xlsx)
    self.ExcelFile = ToExcelFile
    # 保存城市詞云圖的文件路徑(.png/.jpg)
    self.WCOfCityFile = ToCityFile
    # 保存省份地圖的文件路徑(.html)
    self.MapProvinceFile = ToMapProvinceFile
    # 其他可用參數(shù)
    self.MapCityFile = ToMapCityFile
    # 自動調(diào)用run方法,使得在實例化對象后自動運行其他函數(shù)
    self.run()

  '''====================== 2. 統(tǒng)計微信好友信息 ======================'''
  def getFriendsInfo(self):
    ''' 獲取微信好友的全部信息 '''
    # 存儲微信好友的信息(經(jīng)過信息處理的)
    self.friendsInfo = []
    # 定義列標題
    self.infoTitle = ['NickName', 'RemarkName', 'Sex', 'Province', 'City']
    for aFriend in self.allFriends_Info:
      # 獲取昵稱
      NickName = aFriend.raw.get(self.infoTitle[0], None)
      # 獲取備注
      RemarkName = aFriend.raw.get(self.infoTitle[1], None)
      # 獲取性別
      Sex = {1:"男", 2:"女", 0:"其他"}.get(aFriend.raw.get(self.infoTitle[2], None), None)
      # 獲取省份
      Province = aFriend.raw.get(self.infoTitle[3], None)
      # 獲取城市
      City = aFriend.raw.get(self.infoTitle[4], None)
      lisTmp = [NickName, RemarkName, Sex, Province, City]
      self.friendsInfo.append(lisTmp)

  '''====================== 3. 保存微信好友信息 ======================'''
  def saveFriendsInfoAsExcel(self, ExcelName):
    ''' 保存微信好友的信息到 Excel 表格中 '''
    # 生成openpyxl對象
    workbook = openpyxl.Workbook()
    # 激活表格
    sheet = workbook.active
    # 設(shè)置表格標題
    sheet.title = 'WeChatFriendsInfo'
    # 填充列標題到第一行
    for _ in range(len(self.infoTitle)):
      sheet.cell(row=1, column=_+1, value=self.infoTitle[_])
    # 填充微信好友信息,從第二行開始
    for i in range(self.allFriends_Num):
      for j in range(len(self.infoTitle)):
        sheet.cell(row=i+2, column=j+1, value=str(self.friendsInfo[i][j]))
    # 若文件名非空,則保存到該路徑下
    if ExcelName != "":
      workbook.save(ExcelName)
      print(">>> Save WeChat friends' information successfully!")

  '''====================== 4. 分析微信好友信息 ======================'''
  def quiteAnalyzeFriendsInfo(self):
    ''' 分析數(shù)據(jù),一步到位,直接了當 '''
    print(self.allFriends_Info.stats_text())

  '''====================== 5. 產(chǎn)生city詞云圖 ======================'''
  def creatWordCloudOfCity(self, CityName):
    ''' 使用獲取的數(shù)據(jù)生成city詞云圖 '''
    # 獲取所有的城市
    cityStr = ""
    for i in range(self.allFriends_Num):
      if self.friendsInfo[i][4] not in cityStr:
        cityStr += " " + self.friendsInfo[i][4]
    #jieba庫精確模式分詞
    wordlist = jieba.lcut(cityStr)
    cityStr = ' '.join(wordlist)
    # 加載背景圖片
    #cloud_mask = np.array(Image.open(BackGroundFile))
    #設(shè)置詞云圖屬性
    font = r'C:\Windows\Fonts\simfang.ttf' # 設(shè)置字體路徑
    wc = WordCloud(
      background_color = 'black',   # 背景顏色
      #mask = cloud_mask,       # 背景圖片
      max_words = 100,        # 設(shè)置最大顯示的詞云數(shù)
      font_path = font,        # 設(shè)置字體形式(在本機系統(tǒng)中)
      height = 300,          # 圖片高度
      width = 600,          # 圖片寬度
      max_font_size = 100,      # 字體最大值
      random_state = 100,       # 配色方案的種類
      )
    # 生成詞云圖
    myword = wc.generate(cityStr)
    #展示詞云圖
    plt.imshow(myword)
    plt.axis('off')
    plt.show()
    # 若文件名非空,則保存到該路徑下
    if CityName != "":
      #保存詞云圖
      wc.to_file(CityName)
      print(">>> Creat WeChat wordcloud of city successfully!")

  '''===================== 6. 產(chǎn)生province地圖 ====================='''
  def creatMapProvince(self, MapFile):
    ''' 使用獲取的數(shù)據(jù)生成province地圖 '''
    # 獲取所有省份
    provinceList, provinceNum = [], []
    for i in range(self.allFriends_Num):
      if self.friendsInfo[i][3] not in provinceList:
        provinceList.append(self.friendsInfo[i][3])
        provinceNum.append(0)
    for i in range(self.allFriends_Num):
      for j in range(len(provinceList)):
        if self.friendsInfo[i][3] == provinceList[j]:
          provinceNum[j] += 1
    # 生成 Map
    map = Map("各省微信好友分布", width=1000, height=800)
    map.add("", provinceList, provinceNum, maptype="china", is_visualmap=True, visual_text_color='#000')
    # 若文件名非空,則保存到該路徑下
    if MapFile != "":
      #map.show_config()
      map.render(MapFile)
      print(">>> Creat WeChat Map of Provinces seccessfully!")

  '''===================== 7. 產(chǎn)生city地圖 ====================='''
  def creatMapCity(self, MapFile):
    ''' 使用獲取的數(shù)據(jù)生成city地圖 '''
    # 獲取所有省份
    CityList, CityNum = [], []
    for i in range(self.allFriends_Num):
      if self.friendsInfo[i][4] not in CityList:
        CityList.append(self.friendsInfo[i][4])
        CityNum.append(0)
    for i in range(self.allFriends_Num):
      for j in range(len(CityList)):
        if self.friendsInfo[i][4] == CityList[j]:
          CityNum[j] += 1
    for i in range(len(CityList)):
      CityList[i] += '市'
    # 生成 Map
    map = Map("各市微信好友分布", width=1000, height=800)
    map.add("", CityList, CityNum, maptype="廣東", is_visualmap=True, visual_text_color='#000')
    # 若文件名非空,則保存到該路徑下
    if MapFile != "":
      map.render(MapFile)
      print(">>> Creat WeChat Map of Cities seccessfully!")

  '''===================== 8. 自動執(zhí)行函數(shù) ====================='''
  def run(self):
    # 獲取微信好友信息
    self.getFriendsInfo()
    print(">>> Get WeChat friends' information successfully!")
    print(">>> Members:", self.allFriends_Num)
    # 保存微信好友信息
    self.saveFriendsInfoAsExcel(self.ExcelFile)
    # 分析微信好友信息
    self.quiteAnalyzeFriendsInfo()
    # 使用微信好友的 city 產(chǎn)生詞云圖
    self.creatWordCloudOfCity(self.WCOfCityFile)
    # 生成微信好友的 province 地圖
    self.creatMapProvince(self.MapProvinceFile)
    # 生成微信好友的 city 地圖
    self.creatMapCity(self.MapCityFile)

if __name__ == "__main__":
  ToExcelFile = "./WeChatAnalyze//FriendsInfo.xlsx"   # 微信好友信息的Excel表格保存路徑
  ToPictureFile = "./WeChatAnalyze//CityWordCloud.png"  # 微信好友信息city詞云圖保存路徑
  ToMapFileProvince = "./WeChatAnalyze//WeChatProvinceMap.html" # 微信好友信息province地圖保存路徑
  ToMapFileCity = "./WeChatAnalyze//WeChatCityMap.html" # 微信好友信息city地圖保存路徑
  # WeChatRobot對象實例化
  robot = WeChatRobot(ToExcelFile, ToPictureFile, ToMapFileProvince, ToMapFileCity)

以上就是用 python 進行微信好友信息分析的詳細內(nèi)容,更多關(guān)于python 微信信息分析的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 理解Python中函數(shù)的參數(shù)

    理解Python中函數(shù)的參數(shù)

    這篇文章主要介紹了Python中函數(shù)的參數(shù),掌握函數(shù)中的參數(shù)傳遞在任何一門語言的學(xué)習過程當中都是基本功,需要的朋友可以參考下
    2015-04-04
  • 如何使用Python的Requests包實現(xiàn)模擬登陸

    如何使用Python的Requests包實現(xiàn)模擬登陸

    這篇文章主要為大家詳細介紹了使用Python的Requests包模擬登陸,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • python自動化運維之Telnetlib的具體使用

    python自動化運維之Telnetlib的具體使用

    本文將結(jié)合實例代碼,介紹python自動化運維之Telnetlib的具體使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 小小聊天室Python代碼實現(xiàn)

    小小聊天室Python代碼實現(xiàn)

    這篇文章主要為大家詳細介紹了小小聊天室Python具體的實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • python tornado開啟多進程的幾種方法

    python tornado開啟多進程的幾種方法

    本文主要介紹了python tornado開啟多進程的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2023-04-04
  • pygame實現(xiàn)中文輸入框的示例

    pygame實現(xiàn)中文輸入框的示例

    本文主要介紹了pygame實現(xiàn)中文輸入框的示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • python retrying模塊的使用方法詳解

    python retrying模塊的使用方法詳解

    這篇文章主要介紹了python retrying模塊的使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2019-09-09
  • python中l(wèi)ist循環(huán)語句用法實例

    python中l(wèi)ist循環(huán)語句用法實例

    這篇文章主要介紹了python中l(wèi)ist循環(huán)語句用法,以實例形式詳細介紹了Python針對list的解析,包含各種常見的遍歷操作及原理分析,需要的朋友可以參考下
    2014-11-11
  • Python爬蟲實現(xiàn)全國失信被執(zhí)行人名單查詢功能示例

    Python爬蟲實現(xiàn)全國失信被執(zhí)行人名單查詢功能示例

    這篇文章主要介紹了Python爬蟲實現(xiàn)全國失信被執(zhí)行人名單查詢功能,涉及Python爬蟲相關(guān)網(wǎng)絡(luò)接口調(diào)用及json數(shù)據(jù)轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Python3 安裝PyQt5及exe打包圖文教程

    Python3 安裝PyQt5及exe打包圖文教程

    今天小編就為大家分享一篇Python3 安裝PyQt5及exe打包圖文教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01

最新評論