采集流程

一.、明确需求

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

二、代码流程 四大步骤

  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. Blazor Bootstrap 组件库浏览器通知组件介绍

    通知组件 通过浏览器API发送通知信息 , 桌面浏览器表现为右下角系统提示框弹出消息, 移动浏览器表现为弹窗或者到消息列表, blazor页面不在前台也可以通过本组件提醒用户. DEMO https: ...

  2. 【虚拟机】VMware-open-vm-tools安装

    open-vm-tools(VMware-tools的进化版) VMware Tool 和 open-vm-tools任选一样安装即可 在终端进入超级用户 换源下载,依次输入下面命令 sudo cp ...

  3. 使用 GO-CQHttp或mirai框架 搭建QQ的机器人

    我的博客 Go-CQHttp搭建QQ机器人 官方文档在这-->ATRU官方文档 Go-CQHttp + Atri 使用Linux系统部署 需求 服务器一台/带有Linux的机器 Python环境 ...

  4. 使用Proftpd支持FTP/SFTP权限管控

    简介 FTP 文件传输协议,FTP由FTP服务器(存储文件)和FTP客户端(通过FTP协议访问FTP服务器上的资源)组成 传输方式 主动模式(Port) 客户端与服务器端的TCP 21端口建立连接 - ...

  5. 干货 | 手把手教你搭建一套OpenStack云平台

    1 前言 今天我们为一位朋友搭建一套OpenStack云平台. 我们使用Kolla部署stein版本的OpenStack云平台. kolla是用于自动化部署OpenStack的一个项目,它基于dock ...

  6. js实时查询,为空提示

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 弃用!Github 上用了 Git.io 缩址服务的都注意了

    GitHub 是面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub.对程序员来说,GitHub 可以说是开源精神之所系.在 GitHub 任何职业程 ...

  8. vue-router实现原理及简易demo

    自定义路由demo,git地址: git@github.com:xsk-walter/Vue-router.git 一.router基本使用 ① 创建和路由相关的组件 ②Vue.use(vueRout ...

  9. Java中的线程到底有哪些安全策略

    摘要:Java中的线程到底有哪些安全策略呢?本文就为你彻底分析下! 本文分享自华为云社区<[高并发]线程安全策略>,作者:冰 河 . 一.不可变对象 不可变对象需要满足的条件 (1)对象创 ...

  10. [Java反序列化]jdk原生链分析

    jdk原生链分析 原文链接 作为jdk中目前发现的原生链,还是有必要要分析这个用法的.全文仅限尽可能还原挖掘思路 JDK7u21 在很多链中,TemplatesImpl一直发挥着不可或缺的作用,它是位 ...