采集流程

一.、明确需求

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

二、代码流程 四大步骤

  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. JDBC中常用的类和接口

    <零基础学Java> JDBC中常用的类和接口 利用JDBC的这些类和接口可以更方便地访问并处理存储在数据库中的数据. DriverManager类 DriverManager类 是JDB ...

  2. JavaScript深入理解系列:call与apply

    定义 call和apply:函数调动call()方法在执行的时候,函数的里面的this会指向第一个参数值,除第一个参数值后面的若干支都是传进该函数,简而言之就是改变函数运行时的this指向. 使用示例 ...

  3. 【GPLT】 紧急救援(c++)

    题目: 本题使用Dijkstra算法,但在模板上进行了一定的扩展,是一道不错的最短路题目. AC代码: 1 #include<iostream> 2 #include<cmath&g ...

  4. 关于IDEA中添加静态资源(html,jpg等)后找不到资源(404 not found),以及WEB-INF目录介绍

    关于静态资源的加载 在IDEA中的java web application(或者maven项目)添加新的静态资源时(如html,jpg,gif等),常常会遇到静态资源无法加载的情况.这样的情况我们一般 ...

  5. centos下安装ansible自动化工具(超详细,包含基本使用)

    ansible官网:https://www.ansible.com 众所周知,ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef ...

  6. PAT练习--1050 String Subtraction (20 分)

    题⽬⼤意:给出两个字符串,在第⼀个字符串中删除第⼆个字符串中出现过的所有字符并输出. 这道题的思路:将哈希表里关于字符串s2的所有字符都置为true,再对s1的每个字符进行判断,若Hash[s1[i] ...

  7. python学习-Day26

    目录 今日内容详细 编程思想 面向过程编程 面向对象编程 类与对象 概念 类与对象的创建 先定义类 后产生对象 语法结构 如何产生对象 对象的实例化 绑定方法 今日内容详细 编程思想 面向过程编程 将 ...

  8. 【CSAPP】Performance Lab 实验笔记

    perflab这节的任务是利用书中知识,来对图像处理中的Rotate和Smooth操作函数进行优化.这次没对上电波,觉得学了一堆屠龙之技.于我个人理解,现在计算机配置比以前高多了,连SWAP分区都几近 ...

  9. docker 灵活的构建 php 环境

    地址: https://github.com/ydtg1993/server           使用docker搭建灵活的线上php环境 有时候你可能不太需要一些别人已经集成了的包或者镜像      ...

  10. ASP.NET Core + SaasKit + PostgreSQL + Citus 的多租户应用程序架构示例

    在 确定分布策略 中, 我们讨论了在多租户用例中使用 Citus 所需的与框架无关的数据库更改. 当前部分研究如何构建与 Citus 存储后端一起使用的多租户 ASP.NET 应用程序. http:/ ...