用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基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
深入理解python多进程编程
Jun 12 Python
python 字典(dict)按键和值排序
Jun 28 Python
Python即时网络爬虫项目启动说明详解
Feb 23 Python
Python切片索引用法示例
May 15 Python
如何用Python合并lmdb文件
Jul 02 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
在django admin中添加自定义视图的例子
Jul 26 Python
python自动点赞功能的实现思路
Feb 26 Python
解决jupyter notebook 前面书写后面内容消失的问题
Apr 13 Python
Python大批量搜索引擎图像爬虫工具详解
Nov 16 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 25 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
PHP音乐采集(部分代码)
2007/02/14 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
EasyUI 数据表格datagrid列自适应内容宽度的实现
2019/07/18 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
JavaScript中的几种继承方法示例
2020/12/06 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
Python运算符重载用法实例分析
2015/06/01 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
Python实现井字棋小游戏
2020/03/09 Python
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
建筑学推荐信
2013/11/03 职场文书
函授毕业自我鉴定
2013/12/19 职场文书
个人整改方案范文
2014/10/25 职场文书
2015年教研组工作总结
2015/05/04 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
工作会议简报
2015/07/20 职场文书
房产遗嘱范本
2015/08/06 职场文书
Oracle笔记
2021/04/05 Oracle
Python OpenCV实现图像模板匹配详解
2022/04/07 Python