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

2020-02-09  本文已影响0人  Student_JZ

一、前言

为练习数据可视化技能,故在这段时间以新冠肺炎数据为内容,以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)
>>> 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
>>> 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
上一篇 下一篇

猜你喜欢

热点阅读