毕业论文着急了?Python疫情数据分析,并做数据可视化展示
采集流程
一.、明确需求
采集/确诊人数/新增人数


二、代码流程 四大步骤
- 发送请求
- 获取数据 网页源代码
- 解析数据 筛选一些我想用的数据
- 保存数据 保存成表格
- 做数据可视化分析
开始代码
1. 发送请求
import requests # 额外安装: 第三方模块
url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_aladin_banner'
response = requests.get(url)
2. 获取数据 网页源代码
html_data = response.text
# print(response.text)

3. 解析数据
最烦的事情来了,就是提取里面的数据
str_data = re.findall('<script type="application\/json" id="captain-config">\{(.*)\}',html_data)[0]
print(re.findall( '"component":\[(.*)\],',str_data)[0])


用工具去解析一下,在caseList里面就是我们想要的数据了

json_str = re.findall('"component":\[(.*)\],', html_data)[0] # 字符串
# 字典类型取值, 转类型
json_dict = eval(json_str)
caseList = json_dict['caseList']
for case in caseList:
area = case['area'] # 城市
curConfirm = case['curConfirm'] # 当前确诊
curConfirmRelative = case['curConfirmRelative'] # 新增人数
confirmed = case['confirmed'] # 累计确诊
crued = case['crued'] # 治愈人数
died = case['died'] # 死亡人数
4. 保存数据
with open('data.csv', mode='a', newline='') as f:
csv_writer = csv.writer(f)
csv_writer.writerow([area, curConfirm, curConfirmRelative, confirmed, crued, died])
运行代码,得到数据
疫情数据可视化
完整源码+数据集
各地区确诊人数
china_map = (
Map()
.add("现有确诊", [list(i) for i in zip(df['area'].values.tolist(),df['curConfirm'].values.tolist())], "china")
.set_global_opts(
title_opts=opts.TitleOpts(title="各地区确诊人数"),
visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True),
)
)
china_map.render_notebook()
新型冠状病毒全国疫情地图
cofirm, currentCofirm, cured, dead = [], [], [], []
tab = Tab()
_map = (
Map(init_opts=opts.InitOpts(theme='dark', width='1000px'))
.add("累计确诊人数", [list(i) for i in zip(df['area'].values.tolist(),df['confirmed'].values.tolist())], "china", is_map_symbol_show=False, is_roam=False)
.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(
title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图",
),
legend_opts=opts.LegendOpts(is_show=False),
visualmap_opts=opts.VisualMapOpts(is_show=True, max_=1000,
is_piecewise=False,
range_color=['#FFFFE0', '#FFA07A', '#CD5C5C', '#8B0000'])
)
)
tab.add(_map, '累计确诊')
_map = (
Map(init_opts=opts.InitOpts(theme='dark', width='1000px'))
.add("当前确诊人数", [list(i) for i in zip(df['area'].values.tolist(),df['curConfirm'].values.tolist())], "china", is_map_symbol_show=False, is_roam=False)
.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(
title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图",
),
legend_opts=opts.LegendOpts(is_show=False),
visualmap_opts=opts.VisualMapOpts(is_show=True, max_=100,
is_piecewise=False,
range_color=['#FFFFE0', '#FFA07A', '#CD5C5C', '#8B0000'])
)
)
tab.add(_map, '当前确诊')
_map = (
Map(init_opts=opts.InitOpts(theme='dark', width='1000px'))
.add("治愈人数", [list(i) for i in zip(df['area'].values.tolist(),df['crued'].values.tolist())], "china", is_map_symbol_show=False, is_roam=False)
.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(
title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图",
),
legend_opts=opts.LegendOpts(is_show=False),
visualmap_opts=opts.VisualMapOpts(is_show=True, max_=1000,
is_piecewise=False,
range_color=['#FFFFE0', 'green'])
)
)
tab.add(_map, '治愈')
_map = (
Map(init_opts=opts.InitOpts(theme='dark', width='1000px'))
.add("死亡人数", [list(i) for i in zip(df['area'].values.tolist(),df['died'].values.tolist())], "china", is_map_symbol_show=False, is_roam=False)
.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(
title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图",
),
legend_opts=opts.LegendOpts(is_show=False),
visualmap_opts=opts.VisualMapOpts(is_show=True, max_=50,
is_piecewise=False,
range_color=['#FFFFE0', '#FFA07A', '#CD5C5C', '#8B0000'])
)
)
tab.add(_map, '死亡')
tab.render_notebook()
各地区确诊人数与死亡人数情况
\bar = (
Bar()
.add_xaxis(list(df['area'].values)[:6])
.add_yaxis("死亡", df['died'].values.tolist()[:6])
.add_yaxis("治愈", df['crued'].values.tolist()[:6])
.set_global_opts(
title_opts=opts.TitleOpts(title="各地区确诊人数与死亡人数情况"),
datazoom_opts=[opts.DataZoomOpts()],
)
)
bar.render_notebook()
## 采集流程
## **一.、明确需求**
> 采集/确诊人数/新增人数> 

## 二、代码流程 四大步骤
1. 发送请求2. 获取数据 网页源代码3. 解析数据 筛选一些我想用的数据4. 保存数据 保存成表格5. 做数据可视化分析
## 开始代码**1. 发送请求**~~~import requests # 额外安装: 第三方模块
url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_aladin_banner'response = requests.get(url)~~~**2. 获取数据 网页源代码**~~~html_data = response.text# print(response.text)~~~**3. 解析数据**最烦的事情来了,就是提取里面的数据~~~str_data = re.findall('<script type="application\/json" id="captain-config">\{(.*)\}',html_data)[0]print(re.findall( '"component":\[(.*)\],',str_data)[0])~~~用工具去解析一下,在caseList里面就是我们想要的数据了~~~json_str = re.findall('"component":\[(.*)\],', html_data)[0] # 字符串# 字典类型取值, 转类型json_dict = eval(json_str)caseList = json_dict['caseList']for case in caseList: area = case['area'] # 城市 curConfirm = case['curConfirm'] # 当前确诊 curConfirmRelative = case['curConfirmRelative'] # 新增人数 confirmed = case['confirmed'] # 累计确诊 crued = case['crued'] # 治愈人数 died = case['died'] # 死亡人数~~~**4. 保存数据**~~~with open('data.csv', mode='a', newline='') as f: csv_writer = csv.writer(f) csv_writer.writerow([area, curConfirm, curConfirmRelative, confirmed, crued, died])~~~**运行代码,得到数据**
## 疫情数据可视化[完整源码+数据集](https://jq.qq.com/?_wv=1027&k=H7fKJd2B)**各地区确诊人数**~~~china_map = ( Map() .add("现有确诊", [list(i) for i in zip(df['area'].values.tolist(),df['curConfirm'].values.tolist())], "china") .set_global_opts( title_opts=opts.TitleOpts(title="各地区确诊人数"), visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True), ))china_map.render_notebook()~~~**新型冠状病毒全国疫情地图**~~~cofirm, currentCofirm, cured, dead = [], [], [], []
tab = Tab()
_map = ( Map(init_opts=opts.InitOpts(theme='dark', width='1000px')) .add("累计确诊人数", [list(i) for i in zip(df['area'].values.tolist(),df['confirmed'].values.tolist())], "china", is_map_symbol_show=False, is_roam=False) .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) .set_global_opts( title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图", ), legend_opts=opts.LegendOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(is_show=True, max_=1000, is_piecewise=False, range_color=['#FFFFE0', '#FFA07A', '#CD5C5C', '#8B0000']) ))tab.add(_map, '累计确诊')
_map = ( Map(init_opts=opts.InitOpts(theme='dark', width='1000px')) .add("当前确诊人数", [list(i) for i in zip(df['area'].values.tolist(),df['curConfirm'].values.tolist())], "china", is_map_symbol_show=False, is_roam=False) .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) .set_global_opts( title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图", ), legend_opts=opts.LegendOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(is_show=True, max_=100, is_piecewise=False, range_color=['#FFFFE0', '#FFA07A', '#CD5C5C', '#8B0000']) ))tab.add(_map, '当前确诊')
_map = ( Map(init_opts=opts.InitOpts(theme='dark', width='1000px')) .add("治愈人数", [list(i) for i in zip(df['area'].values.tolist(),df['crued'].values.tolist())], "china", is_map_symbol_show=False, is_roam=False) .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) .set_global_opts( title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图", ), legend_opts=opts.LegendOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(is_show=True, max_=1000, is_piecewise=False, range_color=['#FFFFE0', 'green']) ))tab.add(_map, '治愈')
_map = ( Map(init_opts=opts.InitOpts(theme='dark', width='1000px')) .add("死亡人数", [list(i) for i in zip(df['area'].values.tolist(),df['died'].values.tolist())], "china", is_map_symbol_show=False, is_roam=False) .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) .set_global_opts( title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图", ), legend_opts=opts.LegendOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(is_show=True, max_=50, is_piecewise=False, range_color=['#FFFFE0', '#FFA07A', '#CD5C5C', '#8B0000']) ))tab.add(_map, '死亡')
tab.render_notebook()~~~**各地区确诊人数与死亡人数情况**~~~\bar = ( Bar() .add_xaxis(list(df['area'].values)[:6]) .add_yaxis("死亡", df['died'].values.tolist()[:6]) .add_yaxis("治愈", df['crued'].values.tolist()[:6]) .set_global_opts( title_opts=opts.TitleOpts(title="各地区确诊人数与死亡人数情况"), datazoom_opts=[opts.DataZoomOpts()], ))bar.render_notebook()~~~
毕业论文着急了?Python疫情数据分析,并做数据可视化展示的更多相关文章
- Python调用matplotlib实现交互式数据可视化图表案例
交互式的数据可视化图表是 New IT 新技术的一个应用方向,在过去,用户要在网页上查看数据,基本的实现方式就是在页面上显示一个表格出来,的而且确,用表格的方式来展示数据,显示的数据量会比较大,但是, ...
- BI工具做数据可视化项目频频失败的原因
现如今数据可视化可谓是非常之火,随着硬件价格的一降再降,仿佛做数据可视化项目,你没有数据大屏,你就没有逼格.理想很丰满,现实很骨感,并不是每一个数据可视化项目都能够成功.数据可视化项目的进行,无外乎是 ...
- 为什么有些BI工具做数据可视化项目频频失败?
现如今数据可视化可谓是非常之火,随着硬件价格的一降再降,仿佛做数据可视化项目,你没有数据大屏,你就没有逼格.理想很丰满,现实很骨感,并不是每一个数据可视化项目都能够成功.数据可视化项目的进行,无外乎是 ...
- 手把手教你用FineBI做数据可视化
前些日子公司引进了帆软商业智能FineBI,在接受了简单的培训后,发现这款商业智能软件用作可视分析只用一个词形容的话,那就是“轻盈灵动”!界面简洁.操作流畅,几个步骤就可以创建分析,获得想要的效果.此 ...
- python实现的电影票房数据可视化
代码地址如下:http://www.demodashi.com/demo/14275.html 详细说明: Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采 ...
- 2021年都要过去啦,你还在用Excel做数据可视化效果吗?
2021年都要过去啦,你还在用Excel做数据可视化效果吗?古语有云,"工欲善其事,必先利其器",没有专业的工具,前期准备的再好也是白搭.现在运用数据可视化工具于经营活动中的企业是 ...
- 利用python进行数据分析之绘图和可视化
matplotlib API入门 使用matplotlib的办法最常用的方式是pylab的ipython,pylab模式还会向ipython引入一大堆模块和函数提供一种更接近与matlab的界面,ma ...
- 学机器学习,不会数据分析怎么行——数据可视化分析(matplotlib)
前言 前面两篇文章介绍了 python 中两大模块 pandas 和 numpy 的一些基本使用方法,然而,仅仅会处理数据还是不够的,我们需要学会怎么分析,毫无疑问,利用图表对数据进行分析是最容易的, ...
- Python的Excel操作及数据可视化
Excel表操作 python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 安装xlrd pip install xlrd 简单的表格读取 ...
随机推荐
- 巧用 JuiceFS Sync 命令跨云迁移和同步数据
近年来,云计算已成为主流,企业从自身利益出发,或是不愿意被单一云服务商锁定,或是业务和数据冗余,或是出于成本优化考虑,会尝试将部分或者全部业务从线下机房迁移到云或者从一个云平台迁移到另一个云平台,业务 ...
- Java语言学习day28--8月03日
###10接口作为方法参数与返回值 * A: 接口作为方法参数 接口作为方法参数的情况是很常见的,经常会碰到.当遇到方法参数为接口类型时,那么该方法要传入一个接口实现类对象.如下代码演示. //接 ...
- docker入门_docker安装
docker入门_docker安装 ubuntu 安装 curl -sSL https://get.daocloud.io/docker | sh # 官方安装脚本自动安装 systemctl ena ...
- Android四大组件——Activity——Activity的生命周期
Activity状态: 每个Activity在其生命周期中最多可能有四种状态 1.运行状态:处于栈顶时.初次创建处于栈顶时依次调用:onCreate(),onStart(),onResume().由不 ...
- Unity—TextMeshPro
矢量文字,不会因为放大缩小而变的不清晰: 1.TextAsset Window/TextMeshPro/Font Assets Creator 创建TextAsset字体: SourceFont是.t ...
- .NET混合开发解决方案5 WebView2运行时与分发应用
系列目录 [已更新最新开发文章,点击查看详细] 发布使用Microsoft Edge WebView2的应用程序时,客户端计算机上需要安装WebView2运行时,可以安装自动更新的Evergr ...
- 实战 | 一文带你读懂Nginx反向代理
一个执着于技术的公众号 前言 在前面的章节中,我们已经学习了nginx基础知识: 给小白的 Nginx 10分钟入门指南 Nginx编译安装及常用命令 完全卸载nginx的详细步骤 Nginx 配置文 ...
- 这样理解 HTTP,面试再也不用慌了~
开源Linux 长按二维码加关注~ 上一篇:SSH只能用于远程Linux主机? 1 HTTP HTTP 协议是个无状态协议,不会保存状态. 2 Post 和 Get 的区别 先引入副作用和幂等的概念. ...
- MyBatisPlus实现分页和查询操作就这么简单
<SpringBoot整合MybatisPlus基本的增删改查,保姆级教程>在这篇文章中,我们详细介绍了分页的具体实现方法.但是,在日常的开发中还需要搜索功能的.下面让我们一起动起手来,实 ...
- .net 项目使用 JSON Schema
.net 项目使用 JSON Schema 最近公司要做配置项的改造,要把appsettings.json的内容放到数据库,经过分析还是用json的方式存储最为方便,项目改动性最小,这就牵扯到一个问题 ...