用Python可视化新冠疫情数据


Posted in Python onJanuary 18, 2022

前言

不知道大伙有没有看到过这一句话:“中国(疫苗研发)非常困难,因为在中国我们没有办法做第三期临床试验,因为没有病人了。”这句话是中国工程院院士钟南山在上海科技大学2021届毕业典礼上提出的。这句话在全网流传,被广大网友称之为“凡尔赛”发言。

今天让我们用数据来看看这句话是不是“凡尔赛”本赛。在开始之前我们先来说说今天要用到的python库吧!

1.数据获取部分

requests lxml json openpyxl

2.数据可视化部分

pandas  pyecharts(可视化库)

以上的库都可以通过在线下载:

pip instll xx

ps:如果下载速度太慢的话也可以用国内镜像,使用命令,例如:

pip install xx(库名) -i https://pypi.tuna.tsinghua.edu.cn/simple gevent(清华镜像)

现在一起进入今天的代码部分吧!!!

数据获取

目标地址:

https://voice.baidu.com/act/newpneumonia/newpneumonia

进入目标地址我们可以看到如下所示:

用Python可视化新冠疫情数据

现在让我们一起去解析网页结构找到我们要爬取到的数据如下所示:

用Python可视化新冠疫情数据

现在我们找到想要的页面数据接下来就是通过Python来获取这些数据了,上代码:

1 import requests
2 from lxml import etree
3 import json
4 import openpyxl
5 
6 #通用爬虫
7 url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia'
8 headers = {
9    "User-Agent": ".....(换成自己的)"
10 }
11 response = requests.get(url=url,headers=headers).text
12 #在使用xpath的时候要用树形态
13 html = etree.HTML(response)
14 #用xpath来获取我们之前找到的页面json数据  并打印看看
15 json_text = html.xpath('//script[@type="application/json"]/text()')
16 json_text = json_text[0]
17 print(json_text)
之后我们来解析一下json数据,上代码:
1 #用python本地自带的库转换一下json数据
2 result = json.loads(json_text)
3 print(result)
4 #通过打印出转换的对象我们可以看到我们要的数据都要key为component对应5 的值之下  所以现在我们将值拿出来
6 result = result["component"]
7 #再次打印看看结果
8 print(result)
9 获取国内当前数据
10 result = result[0]['caseList']
11 print(result)
接着我们将获取到的数据保存到excel中,上代码:
1 #创建工作簿
2 wb = openpyxl.Workbook()
 3 创建工作表
4 ws = wb.active
5 设置表的标题
6 ws.title = "国内疫情"
7  写入表头
8 ws.append(["省份","累计确诊","死亡","治愈"])
9 #获取各省份的数据并写入
10 for line in result:
11     line_name = [line["area"],line["confirmed"],line["died"],line["crued"]]
12     for ele in line_name:
13         if ele == '':
14             ele = 0
15     ws.append(line_name)
16 #保存到excel中
17 wb.save('./china.xlsx')
最后我们查看一下获取到的数据是什么样的,如图:

用Python可视化新冠疫情数据

emmmm,终于我们把数据获取部分完成了,第二部分的数据可视化来了!!!

数据可视化

这次我们用到的库是pyecharts里面的Map,我们先展示一下本次可视化用到的库

1 #可视化部分
2 import pandas  as pd
3 from pyecharts.charts import Map,Page
4 from pyecharts import options as opts
首先我们要先通过pandas库来获取到刚才我们爬取到的数据,上代码:
1  设置列对齐
2 pd.set_option('display.unicode.ambiguous_as_wide', True)
3  pd.set_option('display.unicode.east_asian_width', True)
4   打开文件
5 df = pd.read_excel('china.xlsx')
6 对省份进行统计
7  data2 = df['省份']
8 data2_list = list(data2)
9 data3 = df['累计确诊']
10  data3_list = list(data3)
11  data4 = df['死亡']
12  data4_list = list(data4)
13 data5 = df ['治愈']
14 data5_list = list(data5)

接着我们来做数据可视化,将在我国地图上的各个省份显示出对应的数值

我们以疫情发生以来治愈数为例,上代码:

1 c = (
2    Map()
3       .add("治愈", [list(z) for z in zip(data2_list, data5_list)], "china")
4      .set_global_opts(
5         title_opts=opts.TitleOpts(),
6         visualmap_opts=opts.VisualMapOpts(max_=200),
7     )
8 )
9 c.render()

用Python可视化新冠疫情数据

当然仅仅一个治愈情况当然说明不了什么,所以我们将三种情况都以这种形式显示出来,上代码:

1 a = (
2     Map()
3     .add("累计确诊", [list(z) for z in zip(data2_list, data3_list)], "china")
4        .set_global_opts(
5       title_opts=opts.TitleOpts(),
6        visualmap_opts=opts.VisualMapOpts(max_=200),
7    )
8 )
9 
10 b = (
11     Map()
12       .add("死亡", [list(z) for z in zip(data2_list, data4_list)], "china")
13       .set_global_opts(
14         title_opts=opts.TitleOpts(),
15         visualmap_opts=opts.VisualMapOpts(max_=200),
16     )
17 )
18 
19 c = (
20     Map()
21        .add("治愈", [list(z) for z in zip(data2_list, data5_list)], "china")
22         .set_global_opts(
23      title_opts=opts.TitleOpts(),
24       visualmap_opts=opts.VisualMapOpts(max_=200),
25     )
26 )
27 
28 page = Page(layout=Page.DraggablePageLayout)
29 page.add(
30     a,
31     b,
32     c,
33 )
34  先生成render.html文件
35 page.render()

用Python可视化新冠疫情数据

当然如果是直接运行代码的话展现出来的地图不是这样的,这个是通过后期的排版来完成的。那么在最后我们来说说是怎么排版的吧。

首先你先将上面的代码运行之后会产生一个render.html的文件然后你打开文件之后可以调整整个页面的布局,根据自己的喜欢来调整,接着点击左上角的“Save Config”将这个json文件保存到跟render.html这个文件同一个路径之下,最后运行一下代码:

1 #完成上一步之后把 page.render()这行注释掉
2 #然后循行这下面
3 Page.save_resize_html("render.html",
4     cfg_file="chart_config.json",
5     dest="my_test.html")

这样以后会产生一个my_test.html这个文件就是我们上面展示的那样啦。以上就是我们这次的结果。从数据的获取到数据可视化,怎么说呢pyecharts还具有其他强大的可视化功能。

python的特色

• 简单
• 易于学习
• 自由开放
• 跨平台
• 可嵌入
• 丰富的库

总结

到此这篇关于用Python可视化新冠疫情数据的文章就介绍到这了,更多相关Python疫情数据可视化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 中 Meta Classes详解
Feb 13 Python
详解python脚本自动生成需要文件实例代码
Feb 04 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
Jul 24 Python
浅谈Python使用Bottle来提供一个简单的web服务
Dec 27 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
Python使用Pickle模块进行数据保存和读取的讲解
Apr 09 Python
python修改文件内容的3种方法详解
Nov 15 Python
Python操作注册表详细步骤介绍
Feb 05 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 Python
python实现简单的学生管理系统
Feb 22 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
Python机器学习应用之基于线性判别模型的分类篇详解
68行Python代码实现带难度升级的贪吃蛇
Jan 18 #Python
如何利用Python实现n*n螺旋矩阵
Jan 18 #Python
聊聊Python String型列表求最值的问题
Jan 18 #Python
Python的三个重要函数详解
Jan 18 #Python
python多线程方法详解
Jan 18 #Python
用Python生成会跳舞的美女
You might like
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
phpmail类发送邮件函数代码
2012/02/20 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
PHP中的Memcache详解
2014/04/05 PHP
PHP如何使用Memcached
2016/04/05 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
PHP重载基础知识回顾
2020/09/10 PHP
UI Events 用户界面事件
2012/06/27 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
2018/05/21 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
浙江文明网签名寄语
2014/01/18 职场文书
小学科学教学反思
2014/01/26 职场文书
党员承诺书内容
2014/03/26 职场文书
大学毕业寄语大全
2014/04/10 职场文书
保护黄河倡议书
2014/05/16 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书