今天在微信公众号 Python爱好者社区 读到文章《Python获取微信好友地区、性别、签名信息并将结果可视化》。非常有意思,以下内容记录自己的学习笔记。
第一步是使用 itchat 库获取微信好友的地区和性别
itchat github主页 https://github.com/littlecodersh/ItChat
自己windows系统电脑安装了Anaconda,直接在dos命令行使用命令pip install itchat
即可安装;接下来是登录微信,命令:
import itchat
itchat.auto_login()
运行命令跳出二维码扫描即可登录。使用friends = itchat.get_friends(update=True)
获取微信好友信息。
friends是一个列表,每一个好友的信息以字典的形式存储。
比如我运行friends[0]
返回的是自己的信息
<User: {'MemberList': <ContactList: []>,
'UserName': '@f82286b5a23ecde13e5b40ff120f82ae42723de36c8e12941a7dffd7adb88133,
'City': '',
'DisplayName': '',
'PYQuanPin': '',
'RemarkPYInitial': '',
'Province': '',
'KeyWord': '',
'RemarkName': '',
'PYInitial': '',
'EncryChatRoomId': '',
'Alias': '',
'Signature': '积极进取,随遇而安',
'NickName': '牧羊的男孩儿',
'RemarkPYQuanPin': '',
'HeadImgUrl': '/cgi-bin/mmwebwx-bin/webwxgeticon?seq=750416727&username=@f82286b5a23ecde13e5b40ff120f82ae42723de36c8e12941a7dffd7adb88133&skey=@crypt_2ecc843e_bfedf24f4279fd0bb90d87bbd8099401',
'UniFriend': 0,
'Sex': 1,
'AppAccountFlag': 0,
'VerifyFlag': 0,
'ChatRoomId': 0,
'HideInputBarFlag': 0,
'AttrStatus': 0,
'SnsFlag': 1,
'MemberCount': 0,
'OwnerUin': 0,
'ContactFlag': 0,
'Uin': 2642324728,
'StarFriend': 0,
'Statues': 0,
'WebWxPluginSwitch': 0,
'HeadImgFlag': 1}>
性别Sex男是1,女是2,未知是0,一个简单的循环获取男女的数量
Unknow = 0
Male = 0
Female = 0
for friend in friends:
if friend["Sex"] == 0:
Unknow = Unknow +1
elif friend["Sex"] == 1:
Male += 1
else:
Female += 1
print("The number of male friends is: ", Male)
print("The number of female friends is: " , Female)
print("There are some friends without gender! " , Unknow)
# 结果
The number of male friends is: 255
The number of male friends is: 169
There are some friends without gender! 29
第二步制作饼图
import matplotlib.pyplot as plt
gender = [255,169,29]
labels = ["Male","Female","Unknow"]
plt.pie(gender)
plt.show()
image.png
plt.pie(gender,labels=labels)
plt.show()
image.png
plt.pie(gender,labels=labels,explode=(0.1,0,0))
plt.show()
image.png
plt.pie(gender,labels=labels,explode=(0.1,0,0),autopct='%1.1f%%')
plt.show()
image.png
plt.pie(gender,labels=labels,explode=(0.1,0,0),autopct='%1.1f%%',shadow=True)
plt.show()
plt.pie(gender,labels=labels,explode=(0.1,0,0),autopct='%1.1f%%',shadow=True,startangle=90)
image.png
plt.pie(gender,labels=labels,explode=(0.1,0,0),autopct='%1.1f%%',shadow=True,startangle=90)
plt.axis('equal')
plt.show()
image.png
PS:回头检查了一下标签和数据没有对应上,才发现最开始输数据的时候和标签没有对应上!
gender = [255,169,29]
labels = ["Male","Female","Unknow"]
这一步要一一对应!
公众号二维码.jpg
欢迎大家关注我的微信公众号 小明的数据分析笔记本
网友评论