用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入门之语句(if语句、while语句、for语句)
Jan 19 Python
python数据结构之图深度优先和广度优先实例详解
Jul 08 Python
10个Python小技巧你值得拥有
Sep 29 Python
django 配置阿里云OSS存储media文件的例子
Aug 20 Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 Python
Python3.8对可迭代解包的改进及用法详解
Oct 15 Python
Python坐标线性插值应用实现
Nov 13 Python
Python属性和内建属性实例解析
Jan 14 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
对python中list的五种查找方法说明
Jul 13 Python
Python常驻任务实现接收外界参数代码解析
Jul 21 Python
解决TensorFlow训练模型及保存数量限制的问题
Mar 03 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
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
php实现在限定区域里自动调整字体大小的类实例
2015/04/02 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
JavaScript经典效果集锦
2010/07/06 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
Python3搜索及替换文件中文本的方法
2015/05/22 Python
python操作excel让工作自动化
2019/08/09 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
创先争优制度
2014/01/21 职场文书
优秀医生事迹材料
2014/02/12 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
英文投诉信格式
2015/07/03 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
python xlwt模块的使用解析
2021/04/13 Python
python 三边测量定位的实现代码
2021/04/22 Python
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers