网站和网页,中国宣布入境最新消息2023,全国工程造价咨询企业管理系统,应该如何使用网络营销策略一、微信好友数据分析功能介绍1.爬取好友列表,显示好友昵称、性别和地域和签名, 文件保存为 xlsx 格式2.统计好友的地域分布#xff0c;并且做成词云和可视化展示在地图上3.获取所有好友的头像#xff0c;合并成一张大图二、需要的库1、Pyecharts#xff1a;一个用于生成ech…一、微信好友数据分析功能介绍1.爬取好友列表,显示好友昵称、性别和地域和签名, 文件保存为 xlsx 格式2.统计好友的地域分布并且做成词云和可视化展示在地图上3.获取所有好友的头像合并成一张大图二、需要的库1、Pyecharts一个用于生成echarts图表的类库echarts是百度开源的一个数据可视化库用echarts生成的图可视化效果非常棒使用pyechart库可以在python中生成echarts数据图。2、Itchat一个开源的微信个人号接口使用python调用微信从未如此简单。3、Jieba简单的分词操作库。4、NumpyNumPy 系统是 Python 的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩 阵。5、Pandaspandas 是基于 NumPy 的一种工具该工具是为了解决数据分析任务而创建的。6、Pillow图像处理。7、wxpywxpy 在 itchat 的基础上通过大量接口优化提升了模块的易用性并进行丰富的功能 扩展。 (微信本身提供)注Pyecharts可能安装0.5.*的版本比较好以上的三方库可以通过命令符(cmd)来实现安装具体命令pip install ***另可视化显示在地图上要安装地图数据包pip install echarts-china-provinces-pypkgpip install echarts-countries-pypkg三、运行环境使用 Anaconda 下的 spyder 编辑器。三、分步操做1、让程序登录微信并获取我的好友相关信息。from wxpy import * #导入模块bot Bot(cache_pathTrue) #初始化机器人选择扫码登录friend_all bot.friends() #获取微信好友信息运行登录代码会自动弹出一个二维码页面打开如下图 1用手机扫码同意后进入微信并获取微信好友的相关信息。2、获取我的信息()(1)利用交互式获取in[2]:print(friend_all[0].raw)#friend_all[0]是我的微信昵称.raw 则是获取我的全部信息{UserName: 8c0c266b8a6e26de8ac633c1b8e9da89bc28c2b8f2ea97084f66518d2b5280ba, City: , DisplayName: , PYQuanPin: , RemarkPYInitial: , Province: , KeyWord: , RemarkName: , PYInitial: ,EncryChatRoomId: , Alias: , Signature: 千帆过尽还是你,NickName: 杨宇平, RemarkPYQuanPin: ,HeadImgUrl: /cgi-bin/mmwebwx-bin/webwxgeticon?seq1697661224username8c0c266b8a6e26de8ac633c1b8e9da89bc28c2b8f2ea97084f66518d2b5280baskeycrypt_35dd26c8_6e6d15d86316931db6d7bbb2bfe9b2e8,UniFriend: 0, Sex: 2, AppAccountFlag: 0, VerifyFlag: 0,ChatRoomId: 0, HideInputBarFlag: 0, AttrStatus: 0, SnsFlag: 1, MemberCount: 0, OwnerUin: 0, ContactFlag: 0, Uin: 548324490, StarFriend: 0, Statues: 0, MemberList: [], WebWxPluginSwitch: 0, HeadImgFlag: 1}(2)文件式获取(在原来的三行代码上加上最后一行即可)from wxpy import *botBot(cache_pathTrue)friend_allbot.friends()print(friend_all[0].raw)#friend_all[0]是我的微信昵称.raw 则是获取我的全部信息显示效果3、获取我的好友数量(在原先的代码上加入此行即可直接放在交互式文件式都可以)print(len(friend_all)) #好友的数量结果(显示博主177个好友)4、把全部的好友信息转化为一个xlsx文件获取好友信息for a_friend infriend_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)#小Flaglist_0[NickName, Sex, City, Province, Signature, HeadImgUrl, HeadImgFlag]#存为一维数组lis.append(list_0)#叠加数据并存为xlsx文件def lis2e17(filename,lis):#把数据存到表格中importopenpyxlwbopenpyxl.Workbook()sheetwb.activesheet.title list2excel17file_name filename .xlsxtitle[NickName,Sex,City,Province,Signature,HeadImgUrl,HeadImgFlag]for i inrange(0, len(lis)):for j inrange(0, len(lis[i])):sheet.cell(rowi1, columnj1, valuestr(lis[i][j]))wb.save(file_name)print(写入数据成功)print(lis2e17(yyp,lis))结果5、把好友的地区用词云统计(1)给原先的yyp.xlsl加上行标题例如nickname sex city province signature headImgUrl headImgFlag(因为下面的词云运用要用到city索引才能调用city那一列)另存为yyp_1.xlsx文件#对数据进行初步探索#方法一#粗略获取好友的统计信息Friends bot.friends()data Friends.stats_text(totalTrue, sexTrue,top_provinces30, top_cities500)print(data)from pandas importread_exceldf read_excel(yyp_1.xlsx,sheetnamelist2excel17) #把yyp.xlsx加上列标题行另存为yyp_1.xlsx,读取新的表格df.tail(5)df.city.count()df.city.describe()#把好友信息(地区)统计词云from wordcloud importWordCloudimportmatplotlib.pyplot as pltimportpandas as pdfrom pandas importDataFrameword_list df[city].fillna(0).tolist()#将 dataframe 的列转化为 list其中的 nan 用“0”替换new_text .join(word_list)wordcloud WordCloud(font_pathsimhei.ttf, background_colorblack).generate(new_text)#设计图背景颜色字体plt.imshow(wordcloud)plt.axis(off)plt.show()(2)将词云图转为HTML的形这需要用到pyecharts库的0.5版本anaconde3原先的是1.0版本的需要删了这个安装0.5版本代码实现如下#利用 pyechart 做词云importpandas as pd#count df.city.value_counts() #对 dataframe 进行全频率统计排除了 nancity_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()valuecount_city.tolist()wordcloud WordCloud(width1300, height620)wordcloud.add(, name, value, word_size_range[20, 100])wordcloud.show_config()wordcloud.render(rD:\Python\wechatcloud.html)效果如下6、把好友的地区转为地图形式要加入模块 import pandas as pd 在添加下面代码province_list df[province].fillna(NAN).tolist()#将 dataframe 的列转化为 list其中的 nan 用 “NAN”替换count_province pd.value_counts(province_list)#对 list 进行全频率统计from pyecharts importMapvaluecount_province.tolist()attrcount_province.index.tolist()mapMap(各省微信好友分布, width1300, height700)map.add(, attr, value, maptypechina, is_visualmapTrue,visual_text_color#000,is_label_show True)#显示地图上的省份map.show_config()map.render(rD:\Python\wechatProMap.html)显示效果如下7、总代码#-*- coding: utf-8 -*-Created on Sun Jun 2 23:38:29 2019author: yypfrom wxpy import *import pandas as pd #地图那要用到的模块botBot(cache_pathTrue)friend_allbot.friends()print(friend_all[0].raw)#friend_all[0]是我的微信昵称.raw 则是获取我的全部信息alen(friend_all)#输出好友个数print(a)lis[]for a_friend infriend_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 lis2e17(filename,lis):#把数据存到表格中importopenpyxlwbopenpyxl.Workbook()sheetwb.activesheet.title list2excel17file_name filename .xlsxtitle[NickName,Sex,City,Province,Signature,HeadImgUrl,HeadImgFlag]for i inrange(0, len(lis)):for j inrange(0, len(lis[i])):sheet.cell(rowi1, columnj1, valuestr(lis[i][j]))wb.save(file_name)print(写入数据成功)print(lis2e17(yyp,lis))#对数据进行初步探索#方法一#粗略获取好友的统计信息#另存文件Friends bot.friends()data Friends.stats_text(totalTrue, sexTrue,top_provinces30, top_cities500)print(data)from pandas importread_exceldf read_excel(yyp_1.xlsx,sheetnamelist2excel17) #把yyp.xlsx加上列标题行另存为yyp_1.xlsx,读取新的表格df.tail(5)df.city.count()df.city.describe()#把好友信息(籍贯)统计词云(常规)from wordcloud import WordCloudimport matplotlib.pyplot as pltimport pandas as pdfrom pandas import DataFrameword_list df[city].fillna(0).tolist()#将 dataframe 的列转化为 list其中的 nan 用“0”替换new_text .join(word_list)wordcloud WordCloud(font_pathsimhei.ttf, background_colorblack).generate(new_text)#设计图背景颜色字体plt.imshow(wordcloud)plt.axis(off)plt.show()#利用 pyechart 做词云(以HTML的形式显示)import pandas as pd#count df.city.value_counts() #对 dataframe 进行全频率统计排除了 nancity_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(width1300, height620)wordcloud.add(, name, value, word_size_range[20, 100])wordcloud.show_config()wordcloud.render(rD:\Python\wechatcloud.html)#把好友的地区显示在地图上(以地图的形式呈现)province_list df[province].fillna(NAN).tolist()#将 dataframe 的列转化为 list其中的 nan 用 “NAN”替换count_province pd.value_counts(province_list)#对 list 进行全频率统计from pyecharts importMapvaluecount_province.tolist()attrcount_province.index.tolist()mapMap(各省微信好友分布, width1300, height700)map.add(, attr, value, maptypechina, is_visualmapTrue,visual_text_color#000,is_label_show True)#显示地图上的省份map.show_config()map.render(rD:\Python\wechatProMap.html)