从数据到信息
从信息到洞察

使用Power BI抓取肺炎疫情数据和可视化

下载文件最后更新时间 3 月 21 日

背景

新冠肺炎疫情的发展之快出乎意料,目前全国范围内的节后复工都延迟了,各位如果觉得长假漫漫,不妨用媒体的实时疫情数据做一次数据可视化的实战演练,这是一次很好的练习机会。我知道有很多数据分析爱好者已经在做这方面的尝试了,比如前几天施阳发了一个Power BI 仪表板

疫情数据仪表板

喜乐君的 Tableau 仪表板

Tableau 疫情仪表板

像武汉肺炎这种重大公共卫生安全事件,在各个领域会不断有大量数据产生,可以切入的角度非常多,卫健委每天公布的当日确诊数据和新增确诊数据等就非常适合用来做仪表板,上面的两个报告就是这个选题。而等到后续历史数据统计出来之后,还可以做更多深入的分析,这是 BI 的主战场,你可能发现了目前主流媒体都没有加入历史数据统计,这块其实不难做,难的是如何保证历史数据的准确性、统计口径一致性,所以等官方数字更保险。

新冠肺炎疫情不仅让成功的把中国人都憋在了家里,带上了口罩,而且在全球范围内都产生了重大影响,很多机构和媒体都对 2019-nCov(新型冠状病毒的名称)做了全面报道,我搜集了几十个优秀的数据可视化作品,本来想做一期专题,和各位分享优秀的图表设计理念和布局,但可能是某些媒体比较敏感,微信直接给毙掉了。

微信后台通知

微信审核不会提示问题出在哪里,挨个测试也不现实,所以这期我就不发了,也不会发布到网站上,因为上了大概率也是封站。为什么这么严?特殊时期,疫情数据是敏感信息,国内的疫情数据必须统一上报卫健委,在这种原则问题上不能出现第二种口径。

获取数据

用 PowerQuery 可以很方便的获取主流媒体平台上公布的数据,而且这个场景非常符合用 PQ 做爬虫的条件:

  1. 数据量小:最明细数据到城市,没有历史数据,所以一次最多也就获取几百行,负担很轻。
  2. 不需要登陆:PQ 使用微软或者 Win 账户登陆比较方便,如果登陆的是第三方服务,需要调整源代码,普通用户学习起来比较困难。
  3. 没有反爬措施:PQ 不是专业爬虫工具,遇到反爬措施比较严格的网站没有太多办法

主流疫情数据统计平台

这里以丁香园页面作为示例,在获取数据前,你需要准备 Excel 或是 Power BI Desktop 作为抓取工具,它们都内置了 PowerQuery。需要注意的是 Excel 至少是 2013 以后的版本才可以,我的抓取过程在 Power BI Desktop 中完成。

导入表格

首先复制页面地址:https://3g.dxy.cn/newh5/view/pneumonia,点击转换数据进入编辑查询视图,如果你是老版本,可以直接点编辑查询进入,按照图中的步骤将页面地址填入步骤 3 后点确定

新建源 – 从 Web 获取数据 – 输入地址

左侧导航界面直接显示出了 7 个表格,点击任意表格,你会发现每个都对应了页面的一部分数据,比如表 5 保存了实时播报的内容

通过选择表格可以方便的预览数据

PowerQuery 可以将页面上一些比较规范和结构化的数据识别为表格,这是最容易获取的一种数据,只需要选择想要的表名加载到 PQ 中,在做好必要的清洗和转换之后,就可以导入模型用来分析和作图了。

如果不能正常获取表格,请开启预览功能中的「新建 Web 表推理」

识别 JSON 格式

用的多了你会发现,能正确识别为表的情况只占很小一部分,大多数情况下我们更习惯用 JSON 格式来存储格式化数据,JSON 的优点很多,它是一种压缩格式,占带宽小,便于服务器解析,还支持多种语言。PowerQuery 也支持读取 JSON 文件。

在我们要爬取的页面上,所有的数据都以 JSON 形式存储,如果使用导入表格的方式,可以获得省份数据和城市数据,但是省份和城市的对应关系是缺失的。如果使用 JSON 读取,就不会出现这个问题。这里有一个小的挑战,从页面源代码或者控制台中正确的识别出 JSON 的位置并提取出来,需要你对 JSON 的特征和 Http 协议有一定了解(这个过程你可以研究文末提供的示例文件,不在这里赘述)

所有页面数据一览

上图是我已经整理好的数据,第一列是 JSON 形式的原始数据,通过新建 Data 列,使用Json.Document这个 PQ 函数,可以将其读取为表格形式,因为接下来每个类型的数据需要保存为单独的表,我把这个查询的「启用加载」功能关闭,用新的查询来引用它,如图:

除了 Source(斜体)以外的查询被加载到模型

接下来关闭并上载数据,大功告成,每次手动刷新都可以获得最新数据,接下来的可视化部分你就可以自由发挥了。

上载数据预览

可视化

目前数据的可分析性不强,大家普遍关心的分析从主流媒体上已经可以看到,所以我没有做仪表板。只做了几个图,供各位参考。

世界地图

层级地图

聚合的气泡图

 

示例文件说明

文件 1 中包含 Power BI Desktop 制作的完整的 PQ 抓取过程和部分可视化练习,文件 2 包含 Excel 获取过程,可按需下载

3 月 15 日更新:因丁香园页面内容调整,之前的下载文件已失效,最新版下载文件适配丁香园网站调整后的页面内容,可继续使用。

3 月 21 日更新:同步最新修改

付费或下载说明

此资源下载价格为4G 币,请先
VIP 地址 1:********
VIP 地址 2:********
注:加入 VIP 会员可享受全站权益,性价比更高。单独购买的内容长期有效,不受时间限制。

36
说点什么

1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
17 评论数
27 被回复的评论
15 订阅评论的人数
 
查看最近回复
查看最热评论
  订阅本文评论  
最新 最旧 得票最多
提醒
成员
mosquito Feng

高老师,下载的这个文件现在不能正常获取数据了呢?

成员
186****3531

如果不能正常获取表格,请开启预览功能中的「新建 Web 表推理」,这个「新建 Web 表推理」在哪里?没找到呢,是power query,还是pbi?

成员
mosquito Feng

高老师,那就是第一个zip 文件哈,我解压出来并没有找到pbix呢,应该怎么用呀

成员
cjh-01

谢谢分享

成员
136****7738

高飞老师,你好!已购买。
下载后应该改怎么看?有说明吗?
下载的示例里哪里用到JSON?

成员
m15010119

添加网址之后是这样的

Snipaste_2020-02-06_18-49-35.png
成员
186****5542

已付款。我目前只能抓取梅斯上面的数据,像其他网站上的都抓不到,已经开户了Web推理。请问如何按照您说的第二种方法抓取数据?

成员
135****4460

你好 购买了实例, 但不知道如何导入

成员
133****1186

哇 你成功了没

成员
fyf831

你好,《如果不能正常获取表格,请开启预览功能中的「新建 Web 表推理」》,请问如何开启(不能获取表格)?

成员
Spartacus333

高飞老师 购买后文件中的可钻取地图可以用在自己的报表里吗?

成员
156****5823

您好,已经购买。这个下载之后的文件是怎么打开啊

成员
158****1669

我已经在支付面板支付了2元,怎么下载完整的PQ抓取过程