用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中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
Jun 07 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
Dec 11 Python
python 格式化输出百分号的方法
Jan 20 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
Apr 01 Python
python面试题Python2.x和Python3.x的区别
May 28 Python
Python操作qml对象过程详解
Sep 26 Python
jupyter notebook 重装教程
Apr 16 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
解决python打开https出现certificate verify failed的问题
Sep 03 Python
python源码剖析之PyObject详解
May 18 Python
如何解决.cuda()加载用时很长的问题
May 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
新版PHP将向Java靠拢
2006/10/09 PHP
PHP面向对象概念
2011/11/06 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
php微信开发之批量生成带参数的二维码
2016/06/26 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
js实现select下拉框菜单
2015/12/08 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
[00:42]《辉夜杯》—职业组预选赛12月3日15点 正式打响
2015/12/03 DOTA
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
Python 不同对象比较大小示例探讨
2014/08/21 Python
python常用知识梳理(必看篇)
2017/03/23 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
Java如何格式化日期
2012/08/07 面试题
商务英语专业毕业生自荐信
2013/11/05 职场文书
求职信的要素有哪些呢
2013/12/26 职场文书
二人合伙经营协议书
2014/09/13 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
python函数的两种嵌套方法使用
2022/04/02 Python