美文网首页
[练习] 新冠肺炎数据可视化

[练习] 新冠肺炎数据可视化

作者: Student_JZ | 来源:发表于2020-02-09 21:16 被阅读0次

一、前言

为练习数据可视化技能,故在这段时间以新冠肺炎数据为内容,以Tableau为工具制作数据可视化仪表板。
由于技术有限,获取完整可信的官方数据较为困难,所以部分采用了第三方数据,感谢数据提供者的付出,不然我无法找到合适的数据进行练习。
如果有读者有更好的方式,或发现我的方法存在问题,请您不吝赐教,谢谢。
另外说明,这里所做内容仅作练习之用,不作为真实疫情形势的参考,若要了解真实有效的数据,请访问国家及各地卫健委官方网站或权威媒体。

二、数据来源

数据有两个来源,一是国家卫健委网站(来源1),二是GitHub的一个数据仓库(来源2)。
采自国家卫健委网站的数据有每日全国境内汇总疫情数据及港澳台地区数据;采自数据仓库的数据为每日境内各地数据,来源2的数据来源及采集方式请见仓库地址内说明。

三、数据处理

对于来源1的数据,一开始是使用Python从文本中直接提取(非爬虫),但是由于中间有几天内容表述发生变化,导致失败,所以此后的数据为手动摘录。由于数据来源可信且数据规整,未做进一步处理。
对于来源2的数据,在数据处理上占用了较多的精力,主要在以下方面进行处理:

  • 由于每日在多个时间点进行密集采集,所以每个地区仅提取每天的最后一条记录作为当天的完整数据
>>> import pandas as pd
>>> file = r"E:\Downloads\BrowserDownloads\DXY-2019-nCoV-Data-master\csv\DXYArea.csv"
>>> df = pd.read_csv(file)
>>> df
      provinceName cityName  ...  city_deadCount               updateTime
0              海南省       三亚  ...               1  2020-02-08 18:19:37.487
1              海南省       海口  ...               0  2020-02-08 18:19:37.487
2              海南省       万宁  ...               0  2020-02-08 18:19:37.487
3              海南省       儋州  ...               0  2020-02-08 18:19:37.487
4              海南省       澄迈  ...               1  2020-02-08 18:19:37.487
...            ...      ...  ...             ...                      ...
25569          云南省       昆明  ...               0  2020-01-24 03:50:31.353
25570          山西省       太原  ...               0  2020-01-24 03:50:31.353
25571          吉林省       长春  ...               0  2020-01-24 03:50:31.353
25572          河北省      石家庄  ...               0  2020-01-24 03:50:31.353
25573      宁夏回族自治区       银川  ...               0  2020-01-24 03:50:31.353

[25574 rows x 11 columns]
>>> df.updateTime.unique()
array(['2020-02-08 18:19:37.487', '2020-02-08 18:18:36.711',
       '2020-02-08 18:14:34.167', ..., '2020-01-24 07:35:32.428',
       '2020-01-24 07:26:28.308', '2020-01-24 03:50:31.353'], dtype=object)
  • 数据中关于地区有两个维度,provinceNamecityName,经抽取部分省份查看城市名称,发现有多个城市有相似的名称,由于地理知识及技术有限决定放弃城市相关的字段,仅保留省份数据;另外由于列名中有Count字样,所以这里当做累计数据来处理(经与我所在地的卫健委网站发布的数据核实,确认为累计数据,其他地区的未逐一确认)。
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 25574 entries, 0 to 25573
Data columns (total 11 columns):
provinceName               25574 non-null object
cityName                   25574 non-null object
province_confirmedCount    25574 non-null int64
province_suspectedCount    25574 non-null int64
province_curedCount        25574 non-null int64
province_deadCount         25574 non-null int64
city_confirmedCount        25574 non-null int64
city_suspectedCount        25574 non-null int64
city_curedCount            25574 non-null int64
city_deadCount             25574 non-null int64
updateTime                 25574 non-null object
dtypes: int64(8), object(3)
memory usage: 2.1+ MB
  • 将我从国家卫健委摘录的港澳台数据与这里的省份数据进行合并。
  • 由于部分省份的数据存在部分日期无数据的情况,这里默认为未采集到最新数据,与上一日相同,所以分别对各省采取向下填充的方式填充数据(在填充前先创建日期完整的数据框再行填充)。
  • 对以上操作后仍为空的数据填充为0,默认为此前无疫情发生。
  • 由于所有字段全部为累计数据,所以这里通过当日减前一日生成每日新增数据。这一步处理后发现新增数据中出现了负数,猜测可能是由于数据采集中提取的不是累计数据,这里为简便处理,统一将负值更改为0。(所以最终结果肯定与真实情况不同,真实情况请参考官方数据或权威媒体)
  • 此外,在作图中发现一处异常,上海累计疑似数据,2020-02-07前均为0,在2020-02-07突增到166,在上海卫健委网站核实,确认数据有问题,但没做进一步处理。
>>> df = df.loc[:,['updateTime', 'provinceName', 'province_suspectedCount']]
>>> df.drop_duplicates(inplace=True)
>>> df = df[df.provinceName=='上海市']
>>> df.loc[df.province_suspectedCount!=0,:]
                   updateTime provinceName  province_suspectedCount
3535  2020-02-07 14:09:37.074          上海市                      166
3552  2020-02-07 14:08:36.321          上海市                      166
3569  2020-02-07 14:07:35.551          上海市                      166
3752  2020-02-07 12:55:41.987          上海市                      166
3769  2020-02-07 12:45:34.322          上海市                      166
4707  2020-02-07 08:00:58.406          上海市                      166

数据处理大致就是这些,详细的Python代码请见文末。下面进行数据可视化。

四、数据可视化

这一部分简述一下作图中遇到的问题及处理方式。
可视化中计划作五个图、一个文字描述,分别为:

  • 全国疫情地图,实现用户可自选日期、指标;
  • 分地区的环形图,按实现用户自选变化;
  • 各指标每日新增的区域图;
  • 医学观察的条形图,对比观察接受医学观察和解除医学观察的人数;
  • 疑似确诊率的图,条形图和折线图复合而成,条形图显示新增疑似和新增确诊,折线图显示疑似的确诊率;
  • 文字描述,以文字的形式展示各指标的新增情况,按用户自选变化。

遇到的问题1:在Tableau中,港澳台地区没有默认显示在中国地图上。
处理方式1:用两个经度创建两个地图,一个定位内地地区,另一个定位港澳台地区,然后通过双轴合并即可。

遇到的问题2:希望只显示部分标签。
处理方式2:新定义一个度量,当标签值小于于设定阈值时返回NULL即可。

其他的作图没有遇到太大的问题,基本都是小问题,各副图片显示如下:

  1. 全国疫情地图
全国疫情地图
  1. 分地区的环形图
分地区的环形图
  1. 指标每日新增区域图
指标每日新增区域图
  1. 医学观察条形图
医学观察条形图
  1. 疑似确诊率的图
疑似确诊率的图

最终的仪表板如下:


仪表板

五、更新

2020-02-13

移除数据处理部分第6条的逻辑。由于疫情发展后期确实会出现新增为负的情况,比如2020年2月12日全国“重症病例减少174例”,这里暂不考虑来源2中各地的数据是否准确,统一移除这条逻辑。

六、其他

  1. 数据整理的Python文件,Tableau文件,及相关数据已上传码云Gitee,链接如下:

https://gitee.com/studentjz/data_analysis_practice/tree/master/nCoV

  1. 各地卫健委网站疫情相关链接
地区 链接 地区 链接
国家卫健委 http://www.nhc.gov.cn/xcs/xxgzbd/gzbd_index.shtml 湖北省 http://wjw.hubei.gov.cn/bmdt/ztzl/fkxxgzbdgrfyyq/xxfb/index.shtml
北京市 http://wjw.beijing.gov.cn/wjwh/ztzl/xxgzbd/ 湖南省 http://wjw.hunan.gov.cn/wjw/xxgk/gzdt/zyxw_1/index.html
天津市 http://wsjk.tj.gov.cn/col/col86/index.html 广东省 http://wsjkw.gd.gov.cn/xxgzbdfk/yqtb/
河北省 http://wsjkw.hebei.gov.cn/index.do?templet=new_list&cid=14&page=1 广西壮族自治区 http://wsjkw.gxzf.gov.cn/zhuantiqu/ncov/
山西省 http://wjw.shanxi.gov.cn/wjywl02/index.hrh 海南省 http://wst.hainan.gov.cn/yqfk/
内蒙古自治区 http://wjw.nmg.gov.cn/ztlm/2016n/xxgzbdgrdfyyqfk/yqtb/index.shtml 重庆市 http://wsjkw.cq.gov.cn/topic/25.jspx
辽宁省 http://wsjk.ln.gov.cn/wst_zdzt/xxgzbd/ 四川省 http://wsjkw.sc.gov.cn/scwsjkw/gzbd/ztxqgl.shtml
吉林省 http://www.jl.gov.cn/szfzt/jlzxd/ 贵州省 http://www.gzhfpc.gov.cn/ztzl_500663/xxgzbdgrdfyyqfk/
黑龙江省 http://wsjkw.hlj.gov.cn/index.php/Home/Zwgk/all/typeid/42 云南省 http://ynswsjkw.yn.gov.cn/wjwWebsite/web/col?id=UU157976428326282067&cn=xxgzbd&pcn=ztlm&pid=UU145102906505319731
上海市 http://wsjkw.sh.gov.cn/xwzx/ 西藏自治区 (未找到)
江苏省 http://wjw.jiangsu.gov.cn/col/col7290/index.html 陕西省 http://sxwjw.shaanxi.gov.cn/col/col863/index.html
浙江省 http://www.zjwjw.gov.cn/col/col1202101/index.html 甘肃省 http://wsjk.gansu.gov.cn/channel/list/11218.html
安徽省 http://wjw.ah.gov.cn/news_list_477_1.html 青海省 https://wsjkw.qinghai.gov.cn/ztbd/yqjk/yqtb/index.html
福建省 http://wjw.fujian.gov.cn/ztzl/gzbufk/yqtb/ 宁夏回族自治区 http://wsjkw.nx.gov.cn/yqfkdt/yqsd1.htm
江西省 http://hc.jiangxi.gov.cn/ztxx/xxgzbdgrdfyyqfk/xibd_gzdt/index.shtml 新疆维吾尔自治区 http://www.xjhfpc.gov.cn/ztzl/fkxxgzbdfygz/yqtb.htm
山东省 http://wsjkw.shandong.gov.cn/ztzl/rdzt/qlzhfkgz/ 新疆生产建设兵团 http://wsj.xjbt.gov.cn/
(未发现相关数据)
河南省 http://www.hnwsjsw.gov.cn/channels/854.shtml

相关文章

  • [练习] 新冠肺炎数据可视化

    一、前言 为练习数据可视化技能,故在这段时间以新冠肺炎数据为内容,以Tableau为工具制作数据可视化仪表板。由于...

  • 新冠肺炎数据可视化

    数据获取 目前,腾讯的疫情实时追踪 网页能够看到实时的新冠病毒数据,网页的数据展示也非常清晰。但这个网页提供的数据...

  • [练习] 获取新冠肺炎疫情数据

    一、前言 前一段时间通过手动摘录国家卫健委数据,及clone GitHub数据仓库的数据,简单做了一个Tablea...

  • 全球新冠肺炎可视化

    1.全球疫情地图: 代码: 2.水平柱状图 代码: 3.南丁格耳玫瑰图 代码:

  • 美国新冠疫情,数据持续增长的背后思考!

    文/郁松 从网络上最新新冠肺炎疫情最新数据显示,4月30号美国感染新冠肺炎的人...

  • 有时候,选择放下也是一种努力

    谁都希望自己是优秀的,我也不例外。 昨天看了各国新冠肺炎治愈可视化数据之后,震撼!我流泪了~很感恩在世上的每一天,...

  • 新冠为啥没有在日本大规模爆发?

    新冠肺炎疫情继续在全球蔓延。据美国约翰斯·霍普金斯大学最新数据显示,截至北京时间30日3时,全球新冠肺炎确诊病例...

  • 新冠肺炎数据获取、分析

    一、新冠肺炎数据爬取 数据来源为腾讯新闻网站api接口,网址:https://news.qq.com/zt2020...

  • 新冠肺炎

    本应是在学校学习的时间,最近大家都只能以这样的宅家直播课的方式来学习。为什么? 都是因为新冠肺炎啊

  • 新冠肺炎

    本应是在学校学习的时间,最近大家都只能以这样的宅家直播课的方式来学习。为什么? 都是因为新冠肺炎啊! 大家最近...

网友评论

      本文标题:[练习] 新冠肺炎数据可视化

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