美文网首页编程-Python
matplotlib绘图笔记之二:饼图展示微信好友的性别比例

matplotlib绘图笔记之二:饼图展示微信好友的性别比例

作者: 小明的数据分析笔记本 | 来源:发表于2019-03-10 23:15 被阅读30次

今天在微信公众号 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
第二步制作饼图

教程地址 https://matplotlib.org/gallery/pie_and_polar_charts/pie_features.html#sphx-glr-gallery-pie-and-polar-charts-pie-features-py

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

欢迎大家关注我的微信公众号 小明的数据分析笔记本

相关文章

网友评论

    本文标题:matplotlib绘图笔记之二:饼图展示微信好友的性别比例

    本文链接:https://www.haomeiwen.com/subject/qwxmpqtx.html