python 으로 위 챗 친구 정보 분석
① wxpy:위 챗 로봇 초기 화
② openpyxl:위 챗 친구 데 이 터 를 Excel 표 로 저장 합 니 다.
③ pyecharts:시각 화 된 지도 생 성
④ wordcloud,matplotlib,jieba:단어 구름 그림 생 성
[특별 알림]:pyecharts 라 이브 러 리 는 0.5.x 버 전 을 사용 하고 pip 에 1.x.x 버 전 을 설치 하기 때문에 자체 적 으로[홈 페이지]에서 다운로드 해 야 합 니 다.
2.기본 기능
① 위 챗 친구 데이터 분석
② 단어 구름 그림 생 성
③ 맵 생 성 전시
3.코드 구현
클래스 를 사용 하여 구현 합 니 다.
(1)가 져 오기 모듈
#
from wxpy import Bot
import openpyxl
from pyecharts import Map
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
(2)로봇 초기 화 및 위 챗 친구 의 소스 정보 획득여기 서 Bot()방법 을 호출 하려 면 스 캔 코드 를 사용 하여 위 챗 웹 페이지 에 로그 인하 고 후속 작업 을 해 야 합 니 다.
def __init__(self, ToExcelFile="", ToCityFile="", ToMapProvinceFile="", ToMapCityFile=""):
''' '''
# ,
self.bot = Bot()
# - ( )
self.allFriends_Info = self.bot.friends()
#
self.allFriends_Num = len(self.allFriends_Info)
# (.xlsx)
self.ExcelFile = ToExcelFile
# (.png/.jpg)
self.WCOfCityFile = ToCityFile
# (.html)
self.MapProvinceFile = ToMapProvinceFile
#
self.MapCityFile = ToMapCityFile
# run ,
self.run()
(3)위 챗 친구 의 정보 통계 및 처리열 거 된 것 외 에 도 개성 서명,프로필 사진 등 다른 속성 이 있 습 니 다.
def getFriendsInfo(self):
''' '''
# ( )
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
#
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):
''' , , '''
print(self.allFriends_Info.stats_text())
(6)city 단어 구름 그림 생 성
def creatWordCloudOfCity(self, CityName):
''' 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))
#
font = r'C:\Windows\Fonts\simfang.ttf' #
wc = WordCloud(
background_color = 'black', #
#mask = cloud_mask, #
max_words = 100, #
font_path = font, # ( )
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):
''' 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):
''' 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!")
상술 한 각 기능 을 실현 하 는 방법 이 있 으 면,여러 가지 방법 을 호출 하 는 방법 이 부족 하 다.(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
self.creatWordCloudOfCity(self.WCOfCityFile)
# province
self.creatMapProvince(self.MapProvinceFile)
# city
self.creatMapCity(self.MapCityFile)
파일 경로 에 대해 main 함수 에서 전달 하면 됩 니 다.[주]:상기 코드 는 모두 클래스 에 있 습 니 다.여기 서 끝 납 니 다.다음은 main 함수 입 니 다.
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)
메 인 함수 가 짧다 고 생각 하 시 죠?하하,맞아요.이렇게 간단 해 요!이제 실현 효 과 를 살 펴 보 자!
>>>이것 은 터미널 디 스 플레이 효과 입 니 다.
>>>이 건 Excel 표 로 저 장 된 내용 입 니 다.
>>> 이것 은 위 챗 친구 각 성의 분포 입 니 다.
>>>이것 은 위 챗 친구 각 시의 분포 입 니 다.
전체 코드
# -*- coding: utf-8 -*-
'''
This is a program which can analyze datas of WeChat friends.
@author: bpf
'''
#
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=""):
''' '''
# ,
self.bot = Bot()
# - ( )
self.allFriends_Info = self.bot.friends()
#
self.allFriends_Num = len(self.allFriends_Info)
# (.xlsx)
self.ExcelFile = ToExcelFile
# (.png/.jpg)
self.WCOfCityFile = ToCityFile
# (.html)
self.MapProvinceFile = ToMapProvinceFile
#
self.MapCityFile = ToMapCityFile
# run ,
self.run()
'''====================== 2. ======================'''
def getFriendsInfo(self):
''' '''
# ( )
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
#
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):
''' , , '''
print(self.allFriends_Info.stats_text())
'''====================== 5. city ======================'''
def creatWordCloudOfCity(self, CityName):
''' 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))
#
font = r'C:\Windows\Fonts\simfang.ttf' #
wc = WordCloud(
background_color = 'black', #
#mask = cloud_mask, #
max_words = 100, #
font_path = font, # ( )
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. province ====================='''
def creatMapProvince(self, MapFile):
''' 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. city ====================='''
def creatMapCity(self, MapFile):
''' 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. ====================='''
def run(self):
#
self.getFriendsInfo()
print(">>> Get WeChat friends' information successfully!")
print(">>> Members:", self.allFriends_Num)
#
self.saveFriendsInfoAsExcel(self.ExcelFile)
#
self.quiteAnalyzeFriendsInfo()
# city
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 으로 위 챗 친구 정보 분석 을 하 는 상세 한 내용 입 니 다.python 위 챗 정보 분석 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.