我的第一个微信好友分析

一、使用到的库

① wxpy:初始化微信机器人

② openpyxl:保存微信好友数据为Excel表格

③ pyecharts:生成可视化的地图

④ wordcloud、matplotlib、jieba:生成词云图

二、开始分析

1、首先登录自己的微信

from wxpy import Bot
#初始化机器人,选择缓存模式(扫码)登录
bot = Bot(cache_path=True)
#获取我的所有微信好友信息
friend_all = bot.friends()
    

运行登录代码会自动弹出一个二维码页面,打开如下图 1, 用手机扫码同意后,进入微信并获取微信好友的相关信息。在这里插入图片描述

print(friend_all[0].raw)#获取自己的全部信息
print(len(friend_all))#输出自己的微信好友人数

为了获取好友信息中需要的部分,我们对信息需要进行处理。从上面的获取信息全字段来看,我们获取的每位好友的信息都是一个字典,字典里只有’City’、‘Province’、‘Signature’、
‘NickName’、‘HeadImgUrl’、'Sex’是我们需要的。下面我们就对这几个 key 进行提取。

lis=[] #创建一个空列表
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)
    list_0=[NickName,Sex,City,Province,Signature,HeadImgUrl,HeadImgFlag]
    lis.append(list_0)

将 lis 列表能够保存到 excel 中:

def lis2e07(filename,lis):
    infoTitle = ['NickName', 'Sex', 'Province', 'City']
    wb = openpyxl.Workbook()
    sheet = wb.active
    sheet.title = 'list2excel07'
    for _ in range(len(infoTitle)):
        sheet.cell(row=1, column=_+1, value=infoTitle[_])
    file_name = filename +'.xlsx'
    for i in range(len(lis)):
        for j in range(len(infoTitle)):
            sheet.cell(row=i+2, column=j+1, value=str(lis[i][j]))
    wb.save(file_name)
lis2e07('C:\\Users\\DELL\\Desktop\\yubg2',lis)

运行结果:
在这里插入图片描述
对数据进行简单的分析:

Friends = bot.friends()
data = Friends.stats_text(total=True, sex=True,top_provinces=30, top_cities=500)
print(data)

结果:
在这里插入图片描述
将好友所在的城市用词云图显示:

import matplotlib.pyplot as plt
plt.ion()
df = read_excel('C:\\Users\\DELL\\Desktop\\yubg2.xlsx',sheet_name='list2excel07')
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()

结果如图
在这里插入图片描述
生成微信好友在广东省分布的城市图:

def creatcitymap():
    CityList=[]
    CityNum = []
    for i in range(FriNum):
        if lis[i][4] not in CityList:
            CityList.append(lis[i][4])
            CityNum.append(0)
    for i in range(FriNum):
        for j in range(len(CityList)):
            if lis[i][4] == CityList[j]:
                CityNum[j] += 1
    for i in range(len(CityList)):
        CityList[i] += '市'
    map=Map(width=1000, height=1000)
    map.add("", CityList, CityNum, maptype="广东", is_visualmap=True, visual_text_color='#000')
    map.render('C:\\Users\\DELL\\Desktop\\citymap.html')

结果如图:在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值