使用Python分析好友性别比例及好友位置
2018-03-18 20:39
477 查看
最近看了一篇文章,利用Python分析好友的性别比例和位置构成,蛮有意思,思路非常简单,通过itchat包将微信里friends的数据导出来,从中选出性别信息,利用matplotlib画成饼状图。同样,从中选出位置的省份信息,生成csv文件,就可以利用现成的一些数据可视化的网站帮你展示。
需要用到的第三方库有:matplotlib、itchat、 collections 、csv
登录微信,取出friends的数据itchat.auto_login(hotReload=True)
friends = itchat.get_friends(update=True)
分析性别比例
由于friends第一个数据(0)为当前用户,因此从1开始记录数据,用map将friends中sex数据导出,其中使用了lambda匿名函数器将sex选择出来。导出sex函数后,要统计性别的个数,使用collections.Counter计数,再使用item转化为可遍历的元组。最后就可以使用matplotlib画图了。
代码如下:def analyseSex(friends):
# 将friends中的Sex信息抽取出来,map返回的是迭代器,转化为list格式
sexs = list(map(lambda x:x['Sex'],friends[1:]))
# item返回(键,值)元组,第一维为键,第二维为值,即个数
# 取性别个数变为列表
counts = list(map(lambda x:x[1],c.Counter(sexs).items()))
# 设置标签
labels = ['未知','男性','女性']
# 设置标签颜色
colors = ['red','yellowgreen','lightskyblue']
plt.figure(figsize=(8,5), dpi=80)
# 设置为仅显示一个分区,不设置的话,图可能是椭圆的
plt.axes(aspect=1)
plt.pie(counts, #性别统计结果
labels=labels, #性别展示标签
colors=colors, #饼图区域配色
labeldistance = 1.1, #标签距离圆点距离
autopct = '%3.1f%%', #饼图区域文本格式
shadow = False, #饼图是否显示阴影
startangle = 90, #饼图起始角度
pctdistance = 0.6 #饼图区域文本距离圆点距离
)
# 图例显示
plt.legend(loc='upper right',)
plt.title(u'%s的微信好友性别组成' %(friends[0]['NickName']))
plt.show()
分析好友位置
这里将friends的姓名、省份写入csv文件,然后使用BDP进行分析
使用DictWriter以字典的形式将每个微信好友的姓名和省份信息写进csv的每行,注意:写入每行之前要先定义数据头,就是数据属性名
代码:def analyseLocation(friends):
# 定义数据头
headers = ['NickName','Province']
with open('location.csv','w',encoding='utf-8',newline='',) as csvFile:
# DictWriter以字典的形式写入内容
# 设置写入格式
writer = csv.DictWriter(csvFile, headers)
# writeheader()实现添加文件头(数据名)
writer.writeheader()
for friend in friends[1:]:
# 定义一个字典
row = {}
# 按属性写入
row['NickName'] = friend['NickName']
row['Province'] = friend['Province']
# 将每个字典写入为一行
writer.writerow(row)在BDP网站的将生成的csv文件上传
按照提示,不停点击下一步,直至上传成功。
选择新建图片,格式选择为“微信运营分析”
维度添加省份,数值添加名字
在“筛选器”筛选省份,去掉国外的和空白的
设置格式
最后生成位置图像
最后就大功告成了,赶紧分析一波自己的微信好友吧。
附上完整的代码框架
参考: https://zhuanlan.zhihu.com/p/34378997?utm_source=wechat_session&utm_medium=social&from=singlemessage
需要用到的第三方库有:matplotlib、itchat、 collections 、csv
登录微信,取出friends的数据itchat.auto_login(hotReload=True)
friends = itchat.get_friends(update=True)
分析性别比例
由于friends第一个数据(0)为当前用户,因此从1开始记录数据,用map将friends中sex数据导出,其中使用了lambda匿名函数器将sex选择出来。导出sex函数后,要统计性别的个数,使用collections.Counter计数,再使用item转化为可遍历的元组。最后就可以使用matplotlib画图了。
代码如下:def analyseSex(friends):
# 将friends中的Sex信息抽取出来,map返回的是迭代器,转化为list格式
sexs = list(map(lambda x:x['Sex'],friends[1:]))
# item返回(键,值)元组,第一维为键,第二维为值,即个数
# 取性别个数变为列表
counts = list(map(lambda x:x[1],c.Counter(sexs).items()))
# 设置标签
labels = ['未知','男性','女性']
# 设置标签颜色
colors = ['red','yellowgreen','lightskyblue']
plt.figure(figsize=(8,5), dpi=80)
# 设置为仅显示一个分区,不设置的话,图可能是椭圆的
plt.axes(aspect=1)
plt.pie(counts, #性别统计结果
labels=labels, #性别展示标签
colors=colors, #饼图区域配色
labeldistance = 1.1, #标签距离圆点距离
autopct = '%3.1f%%', #饼图区域文本格式
shadow = False, #饼图是否显示阴影
startangle = 90, #饼图起始角度
pctdistance = 0.6 #饼图区域文本距离圆点距离
)
# 图例显示
plt.legend(loc='upper right',)
plt.title(u'%s的微信好友性别组成' %(friends[0]['NickName']))
plt.show()
分析好友位置
这里将friends的姓名、省份写入csv文件,然后使用BDP进行分析
使用DictWriter以字典的形式将每个微信好友的姓名和省份信息写进csv的每行,注意:写入每行之前要先定义数据头,就是数据属性名
代码:def analyseLocation(friends):
# 定义数据头
headers = ['NickName','Province']
with open('location.csv','w',encoding='utf-8',newline='',) as csvFile:
# DictWriter以字典的形式写入内容
# 设置写入格式
writer = csv.DictWriter(csvFile, headers)
# writeheader()实现添加文件头(数据名)
writer.writeheader()
for friend in friends[1:]:
# 定义一个字典
row = {}
# 按属性写入
row['NickName'] = friend['NickName']
row['Province'] = friend['Province']
# 将每个字典写入为一行
writer.writerow(row)在BDP网站的将生成的csv文件上传
按照提示,不停点击下一步,直至上传成功。
选择新建图片,格式选择为“微信运营分析”
维度添加省份,数值添加名字
在“筛选器”筛选省份,去掉国外的和空白的
设置格式
最后生成位置图像
最后就大功告成了,赶紧分析一波自己的微信好友吧。
附上完整的代码框架
import matplotlib.pyplot as plt import itchat import collections as c import csv plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 def analyseSex(friends) def analyseLocation(friends) if __name__ == '__main__': itchat.auto_login(hotReload=True) friends = itchat.get_friends(update=True) analyseSex(friends) analyseLocation(friends)
参考: https://zhuanlan.zhihu.com/p/34378997?utm_source=wechat_session&utm_medium=social&from=singlemessage
相关文章推荐
- 利用 Python 分析微信好友性别和位置
- 利用 Python 分析微信好友性别和位置
- 100%教会你python爬取微信好友男女性别比例和地区分布
- 使用Python对微信好友进行数据分析
- 使用Python统计微信好友的男女比例
- [置顶] Python 使用itchat 对微信好友数据进行简单分析
- Python使用Thrift的代码分析
- node-webkit中使用webDB数据库位置分析
- Python之美[从菜鸟到高手]--装饰器之使用情景分析
- 一种分析代金券使用分布情况的方法python实现版(上)
- 使用python绘制人人网好友关系图示例
- [Python下载CSDN博客]4. V3版本_使用正则表达式分析HTML(二)
- 使用SonarQube+Eclipse来分析python代码
- [Python下载CSDN博客]2. 使用BeautifulSoup分析HTML(一)
- 使用python分析git log日志示例
- 使用python构建基于hadoop的mapreduce日志分析平台 推荐
- python装饰器之使用情景分析
- (移动位置社会网络中)LBSN:好友关系对人类活动的影响分析
- 各种工具使得数据分析工作使用python变得越来越流行
- python分析ip地理位置