用python分析微信好友信息并可视化

“python是个好语言”——鲁迅
在这里插入图片描述

准备材料

想要分析微信好友,首先你需要这个:itchat。看名字就知道是用来专门分析微信的模块。没有的话可以先pip安装一下:

pip install itchat

说到可视化,你可能想到用到matplotlib,但是Echarts提供了一个更炫酷的可视化方法。Echarts是百度开发的开源数据可视化的前端插件,之前我一直用这个做学术网络的可视化(比如国际学术合作网络图):
在这里插入图片描述
但是Echarts只能用于前端,对于处理动态数据来说并不是很友好,所以我们使用pyecharts,通过python更加简便地绘图。

pip install pyecharts

微信登录

由于itchat已经将所需的功能封装好,所以相关操作十分简便。首先,需要登录你的微信,并获取微信好友列表:

import itchat
from pyecharts import Pie
from pyecharts import Map

# 设置微信自动登录
itchat.auto_login(hotReload=True)
itchat.dump_login_status()
# 获取微信好友
we_friend = itchat.get_friends(update=True)

之后会跳出一个二维码,你需要通过扫码来登录。下面是登录成功之后显示的信息。

Getting uuid of QR code.
Downloading QR code.
Please scan the QR code to log in.
Please press confirm on your phone.
Loading the contact, this may take a little while.
Login successfully as 你的微信昵称

看看我微信好友中妹子的比例

man = 0
woman = 0
other = 0
for person in we_friend[1:]:
    s = person['Sex']
    if s == 1:
        man += 1
    elif s == 2:
        woman += 1
    else:
        other += 1
        # print(person['NickName'], person['RemarkName'])
attr = ['男','女','其他']
value = [man, woman, other]
pie = Pie('性别饼图')
pie.add('', attr, value, is_label_show=True)
pie.render('./html/性别Pie.html')

好友列表是一个封装好的字典列表数据,你可以通过遍历+键值对访问的方式来查看好友的所有具体信息。试着输出一下,可以看具体有用户名,所在地,啦啦啦啦一大堆属性。我们只看Sex属性并绘制饼图。

dict_keys(['MemberList', 'UserName', 'City', 'DisplayName', 'PYQuanPin', 'RemarkPYInitial', 'Province', 'KeyWord', 'RemarkName', 'PYInitial', 'EncryChatRoomId', 'Alias', 'Signature', 'NickName', 'RemarkPYQuanPin', 'HeadImgUrl', 'UniFriend', 'Sex', 'AppAccountFlag', 'VerifyFlag', 'ChatRoomId', 'HideInputBarFlag', 'AttrStatus', 'SnsFlag', 'MemberCount', 'OwnerUin', 'ContactFlag', 'Uin', 'StarFriend', 'Statues', 'WebWxPluginSwitch', 'HeadImgFlag'])

上述代码执行完毕之后会生成一个html文件,在浏览器端打开它:
在这里插入图片描述
emmm果然程序员女性微信好友较少一些,除去七大姑八大姨就更少了o(╥﹏╥)o
至于那几个性别是其他的,都是什么鬼。你当然可以通过查找来看看到底谁的性别是其他的,但是为了隐私这部分我就不挂上去了…

看看我的好友们来自祖国哪里

    provinces_dict = {}
    city_dict = {}
    for person in we_friend[1:]:
        province = person['Province']
        city = person['City']
        if province == '' or city == '':
            continue
        # 用ASCII的方式去除外国地名
        if ord(province[0]) in range(65,123) or ord(city[0]) in range(65,123):
            continue
        if province in provinces_dict.keys():
            provinces_dict[province] += 1
        else:
            provinces_dict[province] = 1
        if city in city_dict.keys():
            city_dict[city] += 1
        else:
            city_dict[city] = 1
    provinces = []
    p_value = []
    cities = []
    c_value = []
    provinces = list(provinces_dict.keys())
    for key in provinces_dict.keys():
        p_value.append(provinces_dict[key])
    map = Map('微信好友省份分布', width = 1200,height = 600)
    map.add('', provinces, p_value, maptype='china',
        visual_range=[0, 64],
        is_visualmap = True,
        visual_text_color = '#000',
        is_label_show = True)
    map.render('./html/微信好友省份分布.html')

在这里插入图片描述
因为家在吉林省,所以来自吉林的就多啦。
以上只是一些基础的操作,数据分析与可视化是一个非常好玩的过程,大家也可以继续研究~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五月的echo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值