电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

用 python 進(jìn)行微信好友信息分析

瀏覽:106日期:2022-07-04 08:50:39

1. 使用到的庫(kù)

① wxpy:初始化微信機(jī)器人

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

③ pyecharts:生成可視化的地圖

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

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

2. 基本功能

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

② 生成詞云圖

③ 生成地圖展示

3. 代碼實(shí)現(xiàn)

此處使用類來(lái)實(shí)現(xiàn)

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

# 導(dǎo)入模塊from wxpy import Botimport openpyxlfrom pyecharts import Mapfrom wordcloud import WordCloudimport matplotlib.pyplot as pltimport jieba

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

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

def __init__(self, ToExcelFile='', ToCityFile='', ToMapProvinceFile='', ToMapCityFile=''): ’’’ 初始化機(jī)器人和其他參數(shù) ’’’ # 初始化機(jī)器人,需要掃碼 self.bot = Bot() # 獲取我所有的微信好友信息 - 存儲(chǔ)基礎(chǔ)信息(未處理) self.allFriends_Info = self.bot.friends() # 我的微信好友個(gè)數(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 # 自動(dòng)調(diào)用run方法,使得在實(shí)例化對(duì)象后自動(dòng)運(yùn)行其他函數(shù) self.run()

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

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

def getFriendsInfo(self): ’’’ 獲取微信好友的全部信息 ’’’ # 存儲(chǔ)微信好友的信息(經(jīng)過(guò)信息處理的) self.friendsInfo = [] # 定義列標(biāo)題 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對(duì)象 workbook = openpyxl.Workbook() # 激活表格 sheet = workbook.active # 設(shè)置表格標(biāo)題 sheet.title = ’WeChatFriendsInfo’ # 填充列標(biāo)題到第一行 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ù),一步到位,直接了當(dāng) ’’’ 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庫(kù)精確模式分詞 wordlist = jieba.lcut(cityStr) cityStr = ’ ’.join(wordlist) # 加載背景圖片 #cloud_mask = np.array(Image.open(BackGroundFile)) #設(shè)置詞云圖屬性 font = r’C:WindowsFontssimfang.ttf’ # 設(shè)置字體路徑 wc = WordCloud( background_color = ’black’, # 背景顏色 #mask = cloud_mask, # 背景圖片 max_words = 100,# 設(shè)置最大顯示的詞云數(shù) font_path = font,# 設(shè)置字體形式(在本機(jī)系統(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!')

有了上述實(shí)現(xiàn)各個(gè)功能的方法,那么就差一個(gè)調(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)

對(duì)于文件路徑,在main函數(shù)中傳遞即可。【注】:上述代碼都在類中,在此處結(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對(duì)象實(shí)例化 robot = WeChatRobot(ToExcelFile, ToPictureFile, ToMapFileProvince, ToMapFileCity)

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

接下來(lái)看看實(shí)現(xiàn)的效果吧!

>>> 這個(gè)是終端顯示效果

用 python 進(jìn)行微信好友信息分析

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

用 python 進(jìn)行微信好友信息分析

>>> 這個(gè)是微信好友各省的分布

用 python 進(jìn)行微信好友信息分析

>>> 這個(gè)是微信好友各市的分布

用 python 進(jìn)行微信好友信息分析

完整代碼

# -*- coding: utf-8 -*-’’’This is a program which can analyze datas of WeChat friends.@author: bpf’’’# 導(dǎo)入模塊from wxpy import Botimport openpyxlfrom pyecharts import Mapfrom wordcloud import WordCloudimport matplotlib.pyplot as pltimport jiebaclass WeChatRobot: ’’’====================== 1. 獲取微信好友信息 ======================’’’ def __init__(self, ToExcelFile='', ToCityFile='', ToMapProvinceFile='', ToMapCityFile=''): ’’’ 初始化機(jī)器人和其他參數(shù) ’’’ # 初始化機(jī)器人,需要掃碼 self.bot = Bot() # 獲取我所有的微信好友信息 - 存儲(chǔ)基礎(chǔ)信息(未處理) self.allFriends_Info = self.bot.friends() # 我的微信好友個(gè)數(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 # 自動(dòng)調(diào)用run方法,使得在實(shí)例化對(duì)象后自動(dòng)運(yùn)行其他函數(shù) self.run() ’’’====================== 2. 統(tǒng)計(jì)微信好友信息 ======================’’’ def getFriendsInfo(self): ’’’ 獲取微信好友的全部信息 ’’’ # 存儲(chǔ)微信好友的信息(經(jīng)過(guò)信息處理的) self.friendsInfo = [] # 定義列標(biāo)題 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對(duì)象 workbook = openpyxl.Workbook() # 激活表格 sheet = workbook.active # 設(shè)置表格標(biāo)題 sheet.title = ’WeChatFriendsInfo’ # 填充列標(biāo)題到第一行 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ù),一步到位,直接了當(dāng) ’’’ 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庫(kù)精確模式分詞 wordlist = jieba.lcut(cityStr) cityStr = ’ ’.join(wordlist) # 加載背景圖片 #cloud_mask = np.array(Image.open(BackGroundFile)) #設(shè)置詞云圖屬性 font = r’C:WindowsFontssimfang.ttf’ # 設(shè)置字體路徑 wc = WordCloud( background_color = ’black’, # 背景顏色 #mask = cloud_mask, # 背景圖片 max_words = 100,# 設(shè)置最大顯示的詞云數(shù) font_path = font,# 設(shè)置字體形式(在本機(jī)系統(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. 自動(dòng)執(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對(duì)象實(shí)例化 robot = WeChatRobot(ToExcelFile, ToPictureFile, ToMapFileProvince, ToMapFileCity)

以上就是用 python 進(jìn)行微信好友信息分析的詳細(xì)內(nèi)容,更多關(guān)于python 微信信息分析的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: 微信 Python
相關(guān)文章:
主站蜘蛛池模板: 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 不锈钢丸厂家,铝丸,铸钢丸-淄博智源铸造材料有限公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 高防护蠕动泵-多通道灌装系统-高防护蠕动泵-www.bjhuiyufluid.com慧宇伟业(北京)流体设备有限公司 | 口臭的治疗方法,口臭怎么办,怎么除口臭,口臭的原因-口臭治疗网 | 劳动法网-专业的劳动法和劳动争议仲裁服务网 | 线材成型机,线材折弯机,线材成型机厂家,贝朗自动化设备有限公司1 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 佛山商标注册_商标注册代理|专利注册申请_商标注册公司_鸿邦知识产权 | 伸缩器_伸缩接头_传力接头-巩义市润达管道设备制造有限公司 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 耐火浇注料-喷涂料-浇注料生产厂家_郑州市元领耐火材料有限公司 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 | 陶瓷砂磨机,盘式砂磨机,棒销式砂磨机-无锡市少宏粉体科技有限公司 | 导电银胶_LED封装导电银胶_半导体封装导电胶厂家-上海腾烁 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 焊锡丝|焊锡条|无铅锡条|无铅锡丝|无铅焊锡线|低温锡膏-深圳市川崎锡业科技有限公司 | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 车辆定位管理系统_汽车GPS系统_车载北斗系统 - 朗致物联 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 线粒体膜电位荧光探针-细胞膜-标记二抗-上海复申生物科技有限公司 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 水平筛厂家-三轴椭圆水平振动筛-泥沙震动筛设备_山东奥凯诺矿机 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 阻燃剂-氢氧化镁-氢氧化铝-沥青阻燃剂-合肥皖燃新材料 | 氢氧化钾厂家直销批发-济南金昊化工有限公司 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | 棕刚玉_白刚玉_铝酸钙-锐石新材料| 大学食堂装修设计_公司餐厅效果图_工厂食堂改造_迈普装饰 | 伊卡洛斯软装首页-电动窗帘,别墅窗帘,定制窗帘,江浙沪1000+别墅窗帘案例 | 土壤养分检测仪_肥料养分检测仪_土壤水分检测仪-山东莱恩德仪器 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 广州二手电缆线回收,旧电缆回收,广州铜线回收-广东益福电缆线回收公司 | 高精度-恒温冷水机-螺杆式冰水机-蒸发冷冷水机-北京蓝海神骏科技有限公司 | 坏男孩影院-提供最新电影_动漫_综艺_电视剧_迅雷免费电影最新观看 | 硅胶制品-硅橡胶制品-东莞硅胶制品厂家-广东帝博科技有限公司 | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 |