采集流程

一.、明确需求

采集/确诊人数/新增人数

二、代码流程 四大步骤

  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])

运行代码,得到数据

疫情数据可视化

完整源码+数据集
各地区确诊人数

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()

## 采集流程
## **一.、明确需求**
> 采集/确诊人数/新增人数> ![请添加图片描述](https://img-blog.csdnimg.cn/b9ae1343217a4761b9968af0dd02e69c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP54aK54yr54ix5oGw6aWt,size_20,color_FFFFFF,t_70,g_se,x_16)
![请添加图片描述](https://img-blog.csdnimg.cn/c48cd6bc7dd748629b3f754e53943449.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP54aK54yr54ix5oGw6aWt,size_20,color_FFFFFF,t_70,g_se,x_16)
## 二、代码流程 四大步骤
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)~~~![请添加图片描述](https://img-blog.csdnimg.cn/d1d11611adb0447b9c7e9ffbccc9d859.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP54aK54yr54ix5oGw6aWt,size_20,color_FFFFFF,t_70,g_se,x_16)**3. 解析数据**最烦的事情来了,就是提取里面的数据~~~str_data = re.findall('<script type="application\/json" id="captain-config">\{(.*)\}',html_data)[0]print(re.findall( '"component":\[(.*)\],',str_data)[0])~~~![请添加图片描述](https://img-blog.csdnimg.cn/b8fecef0f365497a971d7c51c7bffd1a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP54aK54yr54ix5oGw6aWt,size_20,color_FFFFFF,t_70,g_se,x_16)![请添加图片描述](https://img-blog.csdnimg.cn/e91aa1a4e6cb495c87c3fca14ba71609.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP54aK54yr54ix5oGw6aWt,size_20,color_FFFFFF,t_70,g_se,x_16)用工具去解析一下,在caseList里面就是我们想要的数据了![请添加图片描述](https://img-blog.csdnimg.cn/e44b679676484bfc88b1ae10d8afc1ce.png)![请添加图片描述](https://img-blog.csdnimg.cn/74fbcd8a4d6349e29c33aba4fa04fabe.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP54aK54yr54ix5oGw6aWt,size_20,color_FFFFFF,t_70,g_se,x_16)~~~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://img-blog.csdnimg.cn/a328a35013644df6a0ee01d8a0ac1c68.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP54aK54yr54ix5oGw6aWt,size_16,color_FFFFFF,t_70,g_se,x_16)
## 疫情数据可视化[完整源码+数据集](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()~~~![请添加图片描述](https://img-blog.csdnimg.cn/bad17bd90fb8415aad779da645e06d40.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP54aK54yr54ix5oGw6aWt,size_20,color_FFFFFF,t_70,g_se,x_16)

毕业论文着急了?Python疫情数据分析,并做数据可视化展示的更多相关文章

  1. Python调用matplotlib实现交互式数据可视化图表案例

    交互式的数据可视化图表是 New IT 新技术的一个应用方向,在过去,用户要在网页上查看数据,基本的实现方式就是在页面上显示一个表格出来,的而且确,用表格的方式来展示数据,显示的数据量会比较大,但是, ...

  2. BI工具做数据可视化项目频频失败的原因

    现如今数据可视化可谓是非常之火,随着硬件价格的一降再降,仿佛做数据可视化项目,你没有数据大屏,你就没有逼格.理想很丰满,现实很骨感,并不是每一个数据可视化项目都能够成功.数据可视化项目的进行,无外乎是 ...

  3. 为什么有些BI工具做数据可视化项目频频失败?

    现如今数据可视化可谓是非常之火,随着硬件价格的一降再降,仿佛做数据可视化项目,你没有数据大屏,你就没有逼格.理想很丰满,现实很骨感,并不是每一个数据可视化项目都能够成功.数据可视化项目的进行,无外乎是 ...

  4. 手把手教你用FineBI做数据可视化

    前些日子公司引进了帆软商业智能FineBI,在接受了简单的培训后,发现这款商业智能软件用作可视分析只用一个词形容的话,那就是“轻盈灵动”!界面简洁.操作流畅,几个步骤就可以创建分析,获得想要的效果.此 ...

  5. python实现的电影票房数据可视化

    代码地址如下:http://www.demodashi.com/demo/14275.html 详细说明: Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采 ...

  6. 2021年都要过去啦,你还在用Excel做数据可视化效果吗?

    2021年都要过去啦,你还在用Excel做数据可视化效果吗?古语有云,"工欲善其事,必先利其器",没有专业的工具,前期准备的再好也是白搭.现在运用数据可视化工具于经营活动中的企业是 ...

  7. 利用python进行数据分析之绘图和可视化

    matplotlib API入门 使用matplotlib的办法最常用的方式是pylab的ipython,pylab模式还会向ipython引入一大堆模块和函数提供一种更接近与matlab的界面,ma ...

  8. 学机器学习,不会数据分析怎么行——数据可视化分析(matplotlib)

    前言 前面两篇文章介绍了 python 中两大模块 pandas 和 numpy 的一些基本使用方法,然而,仅仅会处理数据还是不够的,我们需要学会怎么分析,毫无疑问,利用图表对数据进行分析是最容易的, ...

  9. Python的Excel操作及数据可视化

    Excel表操作 python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 安装xlrd pip install xlrd 简单的表格读取 ...

随机推荐

  1. SSL及GMVPN握手协议详解

    之前写过一篇文章搞懂密码学基础及SSL/TLS协议,主要介绍了加密学的基础,并从整体上对SSL协议做了介绍.由于篇幅原因,SSL握手的详细流程没有深入介绍.本文将拆解握手流程,在消息级别对握手进行详细 ...

  2. 使用 HTML5 input 类型提升移动端输入体验(转翻译)

    在过去的几年里,在移动设备上浏览网页已变得难以置信的受欢迎. 但是这些设备上的浏览体验,有时遗留很多的有待改进.当涉及到填写表单时,这一点尤为明显.幸运的是,HTML5规范引入了许多新input类型, ...

  3. CentOS 下 MySQL 服务搭建

    1. 卸载旧 MySQL 查看 rpm 包 rpm-qa | grep mysql 如果存在,使用如下命令卸载 rpm -e 查找是否存在mysql 相关目录 find / -name mysql 卸 ...

  4. python基础练习题(题目 递归求等差数列)

    day20 --------------------------------------------------------------- 实例028:递归求等差数列 题目 有5个人坐在一起,问第5个 ...

  5. K8S+Jenkins自动化构建微服务项目(后续)

    因为之前写过基于K8S部署jenkins master/slave平台,在这个的基础上构建微服务到K8S集群中 Jenkins-slave构建微服务项目到K8S集群 1.微服务项目上传到git仓库 这 ...

  6. .NET Core企业微信网页授权登录

    1.开发前准备 参数获取 corpid 每个企业都拥有唯一的corpid,获取此信息可在管理后台"我的企业"-"企业信息"下查看"企业ID" ...

  7. Percona停服俄罗斯

    2022年3月9日,MySQL重要分支Percona宣布,他们将停止与俄罗斯和白俄罗斯的组织开展新业务,直至另行通知. Percona为支持员工而采取的一些行动如下: 已经在乌克兰目前安全的部分获得了 ...

  8. Windows MongoDB 安装 和 常规操作

    一.下载&安装 从官网 https://www.mongodb.com/try/download/community 下载,可以根据情况选择响应版本.本文演示版本为 5.0.7 下载 .msi ...

  9. Ping原理详解

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 Ping是排除设备访问故障的常见方法.它使用Internet控制消息协议ICMP(Int ...

  10. 重新审视C# Span<T>数据结构

    先谈一下我对Span的看法, span是指向任意连续内存空间的类型安全.内存安全的视图. Span和Memory都是包装了可以在pipeline上使用的结构化数据的内存缓冲器,他们被设计用于在pipe ...