本文数据来源于丁香园官网的疫情数据,包含国家/地区、省份的疑似病例、死亡病例、确诊病例、治愈病例等数据,将其存储在MySQL数据库中,并利用tableau完成相应的动态可视化。

数据获取

数据爬取参考了文章——17行代码简单搞定最新疫情数据获取,根据改进得到代码如下:

//导入需要的库
import pymysql  //数据库
import re //网页内容爬取正则化
import json //json文件
from pip._vendor import requests //网页爬取def create(): //创建数据库表的函数db = pymysql.connect("localhost", "root", "136131", "yiqing",charset='utf8')  // 连接数据库,得到一个数据库对象yiqingcursor = db.cursor() //开启游标功能,得到一个游标对象cursor.execute("DROP TABLE IF EXISTS info") //执行SQL语句//创建表的SQL语句sql = """CREATE TABLE info(Id INT PRIMARY KEY AUTO_INCREMENT,Date varCHAR(255),Country varchar(255),Province varchar(255),City varchar(255),Confirmed_num varchar(255),Yisi_num varchar(255),Cured_num varchar(255),Dead_num varchar(255),Code varchar(255))"""  cursor.execute(sql) //执行上述SQL语句db.close() //断开数据库,释放资源//在数据库表中插入数据函数
def insert(value):db = pymysql.connect("localhost", "root", "136131", "yiqing",charset='utf8')cursor = db.cursor()sql = "INSERT INTO info(Date,Country,Province,City,Confirmed_num,Yisi_num,Cured_num,Dead_num,Code) VALUES ( %s,%s,%s,%s,%s,%s,%s,%s,%s)"try:cursor.execute(sql, value)db.commit()print('插入数据成功')except:db.rollback()print("插入数据失败")db.close()create()  // 创建表
url='https://raw.githubusercontent.com/BlankerL/DXY-2019-nCoV-Data/master/json/DXYArea.json' //数据从丁香园网站获取
response = requests.get(url)
// 将响应信息进行json格式化
versionInfo = response.text
print(versionInfo)//打印爬取到的数据
print("------------------------")//重要数据分割线↓
//从内存加载
jsonData = json.loads(versionInfo)

获取到的数据是以字典的形式存储的,以中国的数据为例,形式如下:

{"locationId": 951001,"continentName": "亚洲","continentEnglishName": "Asia","countryName": "中国","countryEnglishName": "China","provinceName": "中国","provinceEnglishName": "China","provinceShortName": "中国","currentConfirmedCount": 2105,"confirmedCount": 83482,"suspectedCount": 0,"curedCount": 78028,"deadCount": 3349,"comment": null,"cities": null,"updateTime": 1586669332105},

接下来将上面的数据利用上面的函数读取到sql中去。

//用于存储数据的集合
dataSource = []
provinceShortNameList = []
confirmedCountList = []
curedCount = []
deadCountList = []
//遍历对应的数据存入集合中
for k in range(len(jsonData['results'])):countryName=jsonData['results'][k]['countryName'] //获取该组数据的国家名称provinceShortName = jsonData['results'][k]['provinceName'] //获取该组数据的省的名称if("待明确地区" == provinceShortName): //如果是待明确地区continue; //不操作if jsonData['results'][k]['cities']==None or jsonData['results'][k]['cities']==[]:confirmnum=jsonData['results'][k]['confirmedCount'] //确诊病例yisi_num=jsonData['results'][k]['suspectedCount'] //疑似病例cured_num=jsonData['results'][k]['curedCount'] //治愈病例dead_num=jsonData['results'][k]['deadCount'] //死亡病例code=jsonData['results'][k]['locationId']cityname=jsonData['results'][k]['provinceName']date='2020-4-12'insert((date,countryName,provinceShortName,cityname,confirmnum,yisi_num,cured_num,dead_num,code)) //将其插入进SQL文件中else:   for i in range(len(jsonData['results'][k]['cities'])): //对该组数据中的每一个城市confirmnum=jsonData['results'][k]['cities'][i]['confirmedCount'] //确诊病例yisi_num=jsonData['results'][k]['cities'][i]['suspectedCount'] //疑似病例cured_num=jsonData['results'][k]['cities'][i]['curedCount'] //治愈病例dead_num=jsonData['results'][k]['cities'][i]['deadCount'] //死亡病例code=jsonData['results'][k]['cities'][i]['locationId']cityname=jsonData['results'][k]['cities'][i]['cityName']date='2020-4-12'insert((date,countryName,provinceShortName,cityname,confirmnum,yisi_num,cured_num,dead_num,code)) //将其插入进SQL文件中

tableau可视化

之后就可以使用tableau连接数据库进行相应的仪表盘制作。

世界地图数据

对确诊病例进行可视化,由红到蓝确诊人数依次减少,下方显示各个国家的疑似、确诊、死亡、痊愈病例数。

在全球数据中,根据颜色数据可以大致判断确诊人数相对来说比较高的国家分别是美国、中国、俄罗斯以及欧洲一些国家例如意大利、西班牙等。
通过点击相应国家可以在下方的柱状图中查看到该国家的疑似、确诊、死亡、痊愈病例数。

如上图所示,美国确诊病例达到529951,治愈病例32091,死亡病例20608,无疑似病例。

中国地图数据

国内的数据更加丰富,除去各个省市总的病例情况外,还包括各个市区的数据,下面是中国各个省的疫情数据,可以指向相对位置查看具体数据。

通过点击不同城市可以查看到该省各个市的柱状图和气泡图数据,更加直观明了,以上海为例,下图左下角是上海各个区包括境外输入的疑似、确诊、死亡、治愈病例分布,右下角是各个区的气泡图,可根据气泡大小来直观了解确诊数的多少,可以清晰地看到,徐汇区的确诊病例数为18。

关于tableau的更多操作细节可以前往Tableau官方教程。
以上可视化的动态图也可以前往Tableau Public查看。

Tableau疫情可视化相关推荐

  1. Tableau研学小课堂(part3)--Tableau数据可视化

    学习笔记,仅供参考,有错必纠 Tableau数据可视化 工作表界面功能解释 我们导入testFile3.xlsx文件,并进入工作表界面: 标记中的各个选项解释: 颜色:用于调整图形的颜色: 大小:用于 ...

  2. tableau三轴合并_《Tableau数据可视化实战》——1.12节合并不同数据源-阿里云开发者社区...

    本节书摘来自华章社区<Tableau数据可视化实战>一书中的第1章,第1.12节合并不同数据源,作者(美)Ashutosh Nandeshwar,更多章节内容可以访问云栖社区"华 ...

  3. 记录自己三天速成django+html制作国内疫情可视化平台的过程(二)

    3.可视化页面 3.1设计 经过(一)中的操作,我们已经将登录/注册的功能基本实现.下面就是设计可视化页面了,一共会画8张图,我初步的设计是这样的: {% load static %} <!DO ...

  4. 大数据疫情可视化平台1_基于Hadoop3.2.1、Hive3.1.2、搭建疫情信息可视化系统

    前言 项目效果展示 项目源码免费获得请私信博主,绝对免费! 目录 Linux基础命令:往期博客Linux课堂篇3_Linux目录结构.快捷键.常用基础命令 Hadoop3.2.1介绍与环境搭建 Hiv ...

  5. 【实战篇】39 # 如何实现世界地图的新冠肺炎疫情可视化?

    说明 [跟月影学可视化]学习笔记. 世界地图新冠肺炎疫情可视化 下面将实现世界地图新冠肺炎疫情可视化.数据用的是从 2020 年 1 月 22 日到 3 月 19 日这些天的新冠肺炎疫情进展.效果类似 ...

  6. python爬虫疫情可视化

    学习了pyecharts后来小试牛刀下,来做一个中国疫情可视化 首先安装pyecharts库 1.可以直接在pycharm上装 2.也可以更快命令行装,win+r cmd pip install -i ...

  7. (精)Tableau数据可视化设计 实验报告

    (精)Tableau数据可视化设计 实验报告 前言:此为<数据可视化设计>课程实验报告(个人重现版).鉴于实验时发现教程所使用的Tablreau版本已经换代,且图片不清晰.故作此报告(当然 ...

  8. 全球疫情可视化实时更新

    全球疫情可视化实时更新 1. 配置 boostrap为前端框架,echarts可视化,jQuery获取.处理数据 2. 思路 前端框架搭好,这里不细说 后端用JQuery从API中获取数据 3. 如何 ...

  9. 数据分析——Tableau数据可视化与仪表盘搭建

    目录 前言 一.Tableau介绍 二.基础图表制作 [对比分析:比大小] 柱状图 条形图 热力图(突出显示表) 气泡图 [变化分析:看趋势] 折线图 面积图 构成分析:看占比 饼图 树地图 堆积图 ...

最新文章

  1. c语言使能,什么是锁存使能输入
  2. 二维前缀和+差分 HDU6514 Monitor
  3. oracle-imp导入小错filesize设置
  4. OpenGL 着色器的N体仿真
  5. Google File System 学习笔记
  6. mysql索引选择_MySQL 索引选择原则
  7. cdn搭建原理_直播平台搭建并不难,最难的是这两点
  8. 然并卵,苹果还是那个掉队的巨头
  9. android自定义曲线控件,Android自定义折线图
  10. [转载]仿射变换(Affine Transformation)
  11. 嵌入式ttf字体裁减说明
  12. 高通QCA9531 2.4GHz电梯监控无线CPE
  13. 硬件设计与开发——如何提高自己的能力
  14. APP被苹果App Store拒绝的79个原因
  15. 软考题目快速学习法(个人笔记)
  16. 史上最超级KB的10个故事~你撑到第几个才发抖
  17. 软件工程教程:第2章软件问题定义及可行性分析 课后习题
  18. 建立适当的索引(ZZ)
  19. PostgreSQL 儒略历学习资料
  20. 聚划算今日团购_聚划算今日团购清…

热门文章

  1. 【网络安全】如何限制内网网速
  2. android 播放器 sma,SMA测评app
  3. 波段合成,去除黑边并提取土地利用数据....下
  4. Junit 实例精讲基础教程(一) 使用@Ignore注解跳过单元测试方法的执行
  5. 使用 GPSD 快速读取 GPS 信息
  6. mysql-community-server是什么?
  7. mysql-发生系统错误1067
  8. 软件工程导论--设计工程
  9. elipse如何退出调试模式
  10. I-Cache 和 D-Cache