用python中的itchat可视化微信朋友圈

itchat是python与微信网页版连接的api,作为测试,博主利用itchat爬取了自己的微信并进行可视化

首先登录微信,定义函数用来储存好友信息

import itchat
import matplotlib.pyplot as plt
import pandas as pd
import re
import jieba
from pyecharts import Map,Geo
itchat.login()
friends=itchat.get_friends(update=True)
#定义函数从朋友圈中爬取信息
def get_var(var):
    variable = []
    for i in friends:
        value = i[var]
        variable.append(value)
    return variable

计算好友圈性别比例,画一个饼状图

#初始化计数器
male = female = other = 0
#friends[0]是自己的信息,所以要从friends[1]开始
for i in friends[1:]:
    sex = i["Sex"]
    if sex == 1:
        male += 1
    elif sex == 2:
        female += 1
    else:
        other +=1
#计算好友总数
total = len(friends[1:])
a=float(male)/total*100
b=float(female) / total * 100
c=float(other) / total * 100
#就朋友圈性别比例做一个饼状图
x=[a,b,c]
label=['male','female','other']
plt.pie(x=x,labels=label,autopct='%3.1f %%',shadow=True, labeldistance=1.1, startangle = 90,pctdistance = 0.6)
plt.show()

效果如图在这里插入图片描述
获取好友所在地区,做地图可视化

#爬取微信好友所在地区
Province = get_var('Province')
data=pd.DataFrame({'prv':Province,'nu':1})
data=data.loc[data['prv']!='',:]
data=data.groupby(['prv']).sum().sort_values(by='nu')
provice=data.index.tolist()
values=data.values.tolist()
#将好友所在地区分布作一个地图可视化
map = Map("微信好友地区分布",'微信好友地区分布', width=1200, height=600)
map.add("", provice, values, visual_range=[0, 50],  maptype='china', is_visualmap=True,
    visual_text_color='#000')
map.show_config()
map.render(path="D:/04-01中国地图.html")

可视化结果
在这里插入图片描述
获取好友个性签名,分词并统计词频,保存为csv文件

# 爬取好友的个性签名
siglist = []
for i in friends:
    signature = i["Signature"].strip().replace("span", "").replace("class", "").replace("emoji", "")
    rep= re.compile("1f\d+\w*|[<>/=]")
    signature = rep.sub("", signature)
    siglist.append(signature)
text = "".join(siglist)
#中文分词
wordlist = jieba.cut(text, cut_all=True)
word_space_split = ",".join(wordlist).split(',')
#去掉所有停用词
ph=open("C:/Users/Administrator/Desktop/tyc.txt","rb")
tyc=str(ph.read().decode('utf-8'))
ph.close()
m=[]
for i in word_space_split:
    if i not in tyc:
        m.append(i)
#统计词频并保存为csv文件
da=pd.DataFrame({'ci':m,'nu':1})
da=da.groupby(['ci']).sum().sort_values(by='nu',ascending=False)
da.to_csv('d:/qianming.csv')

表格的前五行如下:

词频
6
生活 5
5
何以 4
4

利用R中的wordcloud2做词云图如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43614688/article/details/87895428