python把csv做成柱状图_Python+Tableau制作交互式数据图表

前言

经过2016年一年的时间,虽然自己仍然是个知乎小透明,然而关注者的数量也渐渐增长到仅凭手动一个个翻看会觉得比较累的程度。很想知道我的关注者都是谁,有哪些计量特征,加上一直以来都想写一个知乎爬虫,于是就有了本文。

工作流程

1. python爬虫抓取关注者列表中显示的基本信息;

以一个知乎用户为例:

这里主要选取包括用户名、回答数、文章数、关注者以及是否话题优秀回答者这5个字段。鉴于数据量很小(我只有2k+关注者...),直接写入csv文件。

2. 将CSV文件导入Tableau中绘制图表并发布到Tableau Public;

做出来的东西文末放了链接,有兴趣可以点开来看。

过程中的一些问题

在写爬虫的时候发现知乎是无法使用BeautifulSoup的,因为新版的个人主页页面需要在加载页面时念一句诗运行一段JS,否则直接爬页面源码只能抓到前三个用户的信息。这种时候要么是用headless browser来先运行JS,要么分析网页加载时的request直接获取json数据。像我这种懒癌末期的人自然选了后一种方法。

这样就可以发现请求数据的API了,返回的直接就是json格式的数据,不要太方便。图中框出来Type为"fetch"的那两条就是向后端请求数据的request,看url就能大概知道是请求什么数据,比较直观。其中一条示例(关键信息已打码):

{

"is_followed": true,

"avatar_url_template": "https://pic1.zhimg.com/###_{size}.jpg",

"name": "olivine",

"is_advertiser": false,

"url": "",

"url_token": "###",

"user_type": "people",

"answer_count": 0,

"headline": "Geophysicist",

"avatar_url": "https://pic1.zhimg.com/###_is.jpg",

"is_following": false,

"is_org": false,

"type": "people",

"follower_count": 0,

"badge": [ ],

"id": "###",

"articles_count": 0

}

这样,就可以获取需要的数据了。完整代码见这里:简单粗暴但能用.py

用Tableau进行简单数据可视化

首先想知道的一个问题是到底有多少“大V”关注了我?文章里无法整合交互图表,上截图姑且一观:

图好小眼睛要瞎 : (

接着是关注者的关注者数量分布:

如上两张图可知,我的绝大多数哦关注者都是关注者数量在0-99的新用户/轻度用户,占了90%以上。

上图反应了优秀回答者的比例与关注者数呈现一定的正相关性。不过由于关注者数量超过100000又关注了我的只有一个,所以这个点应该是个坏点,排除之。后边我会用更大的数据量验证一下这个结论。

最后,定义一个特征叫做“关注者转化效率”,即平均每个回答可以吸引到的关注者的数量。答均关注者转化数是一个更能在长期动态反应一个知乎用户作为内容生产者和传播者的特征。一个用户A从某个答案被另一个用户B赞同并不难;但吸引B关注A,并在长期内不取关,需要长期质量稳定的内容输出。赞数反应历史评价,而关注者数反应动态评价。我的关注者的“关注者转化效率”如下图:

曲线上方的用户“关注者转化效率”高于曲线下

当然这个效率到底有什么意义就见仁见智了。效率高的用户写较少的答案就能吸引更多的关注者,除此之外并无高低之分,因为还有很多其它影响因素在发挥作用。

后记

前边提到数据量少所以关于话题优秀回答者与关注者数之间的正相关关系缺乏说服力。于是我选了我关注的人里关注者最多的用户作为样本进行抽样。33万+关注者,已经是一个中小城镇的人口普查了,应该具备一定的代表性。

上图就是该用户的关注者中优秀回答者比例随关注者数量变化的示意图。粗略看一下似乎不止是线性,乍一看貌似是指数型增长。此外,优秀回答者的门槛之一看来是关注者在100以上?

如果感兴趣的话可以把工作簿下载到本地,爬去自己的数据之后导入进去玩儿一下看看自己的关注者特征也是极好的。也可以自己去修改代码加入更多的字段,譬如性别、职业之类的。

就这样吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值