新冠疫情分析(疫情数据爬取+数据分析+网页排版展示)

新冠疫情来临,我简单的做一次疫情的数据分析温习我的python知识,也希望能帮到各位。分析中我用到的技术有:pyton爬取数据html+css将分析结果排版。用到的工具有excel+tableau进行数据处理分析和绘图。数据分析中还是存在很多的不足,很多地方有待提高,希望大家多多交流。
首先,我们要获取到数据,本次数据分析所需要的疫情数据来自https://ncov.dxy.cn。通过对网站的分析有世界的疫情数据和中国的疫情数据,所以我们要分别爬取到世界和全国的疫情数据。
在这里插入图片描述
好了,接下来废话不多说,为了更直观的了解数据爬取的过程,我把爬取世界疫情数据、爬取全国的疫情数据分开来写,虽然有很多相同的代码,不过能更好的理解数据获取的过程。
爬取世界疫情数据的代码:

import json
import requests
import pandas as pd
from bs4 import BeautifulSoup
url = 'https://ncov.dxy.cn/ncovh5/view/pneumonia?from=timeline&isappinstalled=0'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
response = requests.get(url,headers = headers)
response.encoding = 'utf-8'
content = response.content.decode('utf-8')#以字节流形式打印网页源码
soup = BeautifulSoup(response.text,'lxml')
#爬取选择网页文档的内容
data = soup.find_all(name = 'script',attrs = {'id':'getListByCountryTypeService2true'})
#转为字符串
account = str(data)
account1 = account[95:-21]#切片截取从52到后面倒数21取到需要的数据
account1_json = json.loads(account1)#提取数据到列表
id = []
continents = []
provinceName = []
currentConfirmedCount = []
confirmedCount = []
confirmedCountRank = []
suspectedCount = []
curedCount = []
deadCount = []
deadCountRank = []
deadRate = []
deadRateRank = []
print(len(account1_json))
i=0
for a in account1_json:if 'id' in a:id.append(a['id'])else:id.append('没有')continents.append(a['continents'])provinceName.append(a['provinceName'])currentConfirmedCount.append(a['currentConfirmedCount'])confirmedCount.append(a['confirmedCount'])if 'confirmedCountRank' in a:confirmedCountRank.append(a['confirmedCountRank'])else:confirmedCountRank.append('没有')suspectedCount.append(a['suspectedCount'])curedCount.append(a['curedCount'])deadCount.append(a['deadCount'])if 'deadCountRank' in a:deadCountRank.append(a['deadCountRank'])else:deadCountRank.append('没有')if 'deadRate' in a:deadRate.append(a['deadRate'])else:deadRate.append('没有')if 'deadRateRank' in a:deadRateRank.append(a['deadRateRank'])else:deadRateRank.append('没有')#转换成pandas数组
df = {'id':pd.Series(id),'所在大洲':pd.Series(continents),'城市':pd.Series(provinceName),'当前确诊':pd.Series(currentConfirmedCount),'累计确诊':pd.Series(confirmedCount),'确诊排名':pd.Series(confirmedCountRank),'疑似病例':pd.Series(suspectedCount),'治愈人数':pd.Series(curedCount),'死亡人数':pd.Series(deadCount),'死亡人数排名':pd.Series(deadCountRank),'死亡率':pd.Series(deadRate),'死亡率排名':pd.Series(deadRateRank)
}
pds = pd.DataFrame(df)
pds.to_excel('1.xlsx', index=False)

以上代码我将数据爬取后用pandas处理过后并写到表格文件里:
在这里插入图片描述
在这里插入图片描述

国内疫情数据的爬取:

import requests
import pandas as pd
from bs4 import BeautifulSoup
import re
url = 'https://ncov.dxy.cn/ncovh5/view/pneumonia?from=timeline&isappinstalled=0'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
#省级正则表达式
provinceName_re = re.compile(r'"provinceName":"(.*?)",')
provinceShortName_re = re.compile(r'"provinceShortName":"(.*?)",')
currentConfirmedCount_re = re.compile(r'"currentConfirmedCount":(.*?),')
confirmedCount_re = re.compile(r'"confirmedCount":(.*?),')
suspectedCount_re = re.compile(r'"suspectedCount":(.*?),')
curedCount_re = re.compile(r'"curedCount":(.*?),')
deadCount_re = re.compile(r'"deadCount":(.*?),')
comment_re = re.compile(r'"comment":"(.*?)",')
locationId_re = re.compile(r'"locationId":(.*?),')
statisticsData_re = re.compile(r'"statisticsData":"(.*?)",')
cities_re = re.compile(r'"cities":\[\{(.*?)\}\]')#市级正则表达式
cityName_re = re.compile(r'"cityName":"(.*?)",')
currentConfirmedCount_1_re = re.compile(r'"currentConfirmedCount":(.*?),')
confirmedCount_1_re = re.compile(r'"confirmedCount":(.*?),')
suspectedCount_1_re = re.compile(r'"suspectedCount":(.*?),')
curedCount_1_re = re.compile(r'"curedCount":(.*?),')
deadCount_1_re = re.compile(r'"deadCount":(.*?),')
locationId_1_re = re.compile(r'"locationId":(.*?)\},')#爬虫爬取数据
datas = requests.get(url,headers = headers)
datas.encoding = 'utf-8'
soup = BeautifulSoup(datas.text,'lxml')
data = soup.find_all('script',{'id':'getAreaStat'})
data = str(data)
data_str = data[54:-23]#替换字符串内容,避免重复查找
citiess = re.sub(cities_re,'8888',data_str)
#查找省级数据
provinceNames = re.findall(provinceName_re,citiess)
provinceShortNames = re.findall(provinceShortName_re,citiess)
currentConfirmedCounts = re.findall(currentConfirmedCount_re,citiess)
confirmedCounts = re.findall(confirmedCount_re,citiess)
suspectedCounts = re.findall(suspectedCount_re,citiess)
curedCounts = re.findall(curedCount_re,citiess)
deadCounts = re.findall(deadCount_re,citiess)
comments = re.findall(comment_re,citiess)
locationIds = re.findall(locationId_re,citiess)
statisticsDatas = re.findall(statisticsData_re,citiess)#查找市级数据
citiess_str1 = re.findall(cities_re,data_str)
#将市级列表数据转为字符串,方便正则表达式查找
citiess_str = str(citiess_str1)
cityName = re.findall(cityName_re,citiess_str)
currentConfirmedCount_1 = re.findall(currentConfirmedCount_1_re,citiess_str)
confirmedCount_1 = re.findall(confirmedCount_1_re,citiess_str)
suspectedCount_1 = re.findall(suspectedCount_1_re,citiess_str)
curedCount_1 = re.findall(curedCount_1_re,citiess_str)
deadCount_1 = re.findall(deadCount_1_re,citiess_str)# 省级数据转换为pandas数组
df = {'地区代码':pd.Series(locationIds),'省':pd.Series(provinceNames),'省区短名':pd.Series(provinceShortNames),'当前确诊':pd.Series(currentConfirmedCounts),'累计确诊':pd.Series(confirmedCounts),'疑似确诊':pd.Series(suspectedCounts),'治愈人数':pd.Series(curedCounts),'死亡人数':pd.Series(deadCounts),'评论':pd.Series(comments),'统计数据区':pd.Series(statisticsDatas),
}
pds = pd.DataFrame(df)
pds.to_excel('国内疫情统计表1.xlsx',index=True)

获取数据后用Excel进行简单的处理,并和tableau一起将结果绘制成图像。下图是几张成果图:
世界疫情热点地图:
在这里插入图片描述
国内疫情热点地图:在这里插入图片描述

将获取处理过的数据可视化以后还差形成报告分析的形式,编写报告的方式很多,不过我选择的是用前端网页的形式呈现出来。这种的方法的优点是:排版的效果更好,更直观,可以自己通过编写代码的形式自己设计想要的排版格式;缺陷是不可打印,难度较大,需要对html和css有一定的基础。数据可在我的个人博客获取,数据的链接如下见路不走个人博客
也有网友给我说能不能获取到历史的的数据,我下载仔细研究了一下,每个省每天都会公布当天的疫情数据,所以只有去爬取每个省每天的公布信息,然后对其挖掘处理便可得到对应省份的历史信息,我重新用java和springboot框架编写爬虫并已经获取了各个省份全部的新冠历史疫情数据,具体的看我的另一篇博文:全国各省新冠肺炎疫情的历史数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18711.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Python语言的Spark数据处理分析——2020年美国新冠肺炎疫情数据分析

基于Python语言的Spark数据处理分析——2020年美国新冠肺炎疫情数据分析 一、实验环境二、数据集1.数据集下载来源2.转换文件格式3.上传文件至HDFS文件系统 三、使用Spark进行数据分析1.读取文件并生成DataFrame2.采用python编程语言进行数据分析3.将HDFS上结果文件保存到本地文…

Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇

今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql进行数据分析制作疫情报告使用itchat给亲人朋友发送分析报告(本文)基于Django做数据屏幕使用Tableau做数据分析 来看看最终效果 目前已经完成&#xff…

python 爬取国内各省份新冠疫情历史数据(来自腾迅疫情)

数据接口: https://api.inews.qq.com/newsqa/v1/query/pubished/daily/list?adCode310000其中,adCode 是地区地理编码,可参考:python 全国行政地区信息爬取-腾迅位置服务平台请求方式: GET返回数据类型: J…

Python采集全球疫情数据并做可视化分析

嗨嗨,大家好~ 今天真的是刚睡醒就知道RNG八人确诊,这年头出国打个比赛都这么不容易,希望早日康复~ 唉,今天就教你们 如何用Python采集全球疫情数据,并做可视化分析 知识点: 爬虫基本流程requests 发送请求re 正则表…

【大数据平台】基于Spark的美国新冠肺炎疫情数据分析及预测

一、选题背景 新型冠状病毒疫情是由严重急性呼吸系统综合征冠状病毒2(SARS-CoV-2)导致的2019冠状病毒病(COVID-19)所引发的全球大流行疫情。该疾病在2019年末于中华人民共和国湖北省武汉市首次爆发,随后在2020年初迅速…

chatgpt画思维导图

场景: chatgpt写思维导图代码,进而在专门的软件中生成思维导图 方法 在提问中,输入需要的思维导图代码格式

ChatGPT与网络安全的跨时代对话

前言 ChatGPT:是人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务。G…

ChatGPT实现数据结构转换

数据结构转换 在应用系统开发和维护中,经常会有配置数据或客户数据需要在不同的序列化结构中相互转换的需求。不同编程语言之前,对数据结构的偏好也不一样,比如 JavaScript 一般使用 JSON、Java 一般使用 XML、Ruby 一般使用 YAML、Golang 一…

springboot3 笔记(雷峰阳)

文章目录 springboot3核心特性SpringBoot3-快速入门环境要求SpringBoot是什么快速体验1. 开发流程1. 创建项目2. 导入场景3.主程序4. 业务5. 测试6. 打包 2. 特性小结1. 简化整合2. 简化开发3. 简化配置5. 简化运维 3. Spring Initializr 创建向导3、应用分析1. 依赖管理机制2.…

我靠海外抖音搬运视频赚到了人生第一桶金:这个风口行业,真的很赚钱

在2022年新一轮疫情期间,“有啥方法,可在家快速赚钱?”冲上了热门话题。 “好想挣钱啊...…”单位难开工,生意不开张,咱们才惊醒:“领死工资的生活,真的好脆弱。” 平时总说副业赚钱&#xff0c…

腾讯股票接口、和讯网股票接口、新浪股票接口、雪球股票数据、网易股票数据...

2019独角兽企业重金招聘Python工程师标准>>> 腾讯股票接口: 分时图 http://data.gtimg.cn/flashdata/hushen/minute/sz000001.js?maxage110&0.28163905744440854 五天分时图 http://data.gtimg.cn/flashdata/hushen/4day/sz/sz000002.js?maxage432…

移动端APP——微信(1)手机桌面控件和启动画面显示与隐藏

微信原型设计1:手机桌面控件和启动画面显示与隐藏 微信原型设计运用的是产品原型设计软件Axure RP Pro 7.0 版。 一、手机桌面绘制 手机的外壳和桌面、以及微信图标都是直接引用的图片库中图片,将元件库中的image拖入,并单击右键导入图片即…

android 那个桌面好,Hola桌面 可能是最好用的安卓手机桌面

如果你是一名安卓手机用户,你可能会有这样的感觉,手机自带的系统桌面一般都比较鸡肋,不能自定义自己喜欢的样式,或者说是扩展性不尽人意。如果你不甘心这一切,你也许尝试过一些手机桌面产品,但能让你一直坚…

android 如何自定义桌面,安卓手机桌面设置教程 个性化你的桌面

Android系统是一款功能非常的强大的全球智能手机操作系统!而相对于一些新手来说,熟练的操作安卓手机非常的难,那么下面我就安卓手机桌面设置来给新手用户一个简单的教程,让你的手机桌面变的更加的人性化! 随着谷歌Adro…

android 手机桌面,安卓手机桌面介绍:教你认识安卓手机桌面

一个新手拿到手机,开机后看到的第一个画面就是桌面了,想要玩转整个手机,那么就先把桌面的各个功能都了解下吧。一般来说,刚买的新手机都是用的自带桌面,不同品牌的手机也是各不相同,但是功能方面都是大同小…

倡议书:关于暂停「巨型 AI」 实验的一封公开信

本文是 futureoflife 公开信,原文地址 https://futureoflife.org/open-letter/pause-giant-ai-experiments/ 目前已经有 1127 1127 1127 名 AI 学者参与签署。 以下为正文: 本文提出呼吁所有人工智能实验室立即暂停比 GPT-4 更强大的人工智能系统的训练…

ChatGPT vs 谷歌PaLM2,人类堕入“囚徒困境”?

前言 chatgpt的连续火爆,可以说是IT界近几十年来为数不多的超量话题,几乎各行各业都开始了chatgpt的研究。chatgpt受到的关注度可以说是无可估量的。各大巨头的纷纷加入也是它不断的推上热浪的关键。 最近看的一篇热文很有意思,全面分析透彻…

2023-05-31【02】ChatGPT 之父警告 AI 可能灭绝人类,350 名 AI 权威签署公开信

今天,AI 领域传出一封重要的公开信。 包括 「ChatGPT 之父」Sam Altman 在内 350 位 AI 权威都签署了这封联名公开信,并对当前正在开发的 AI 技术可能会对人类构成生存威胁担忧。 这封信只有一句声明:降低人工智能灭绝的风险,应该…

“ChatGPT之父”等350名业内人士签署公开信并警告:AI可能灭绝人类

人们对 AI 技术的发展和应用有了更加深入的思考与探讨。 日前,超过350名人工智能(AI)领域的行业高管、专家和教授签署了一封公开信,他们在信中警告称,AI可能给人类带来灭绝风险。 这份公开信发布在非营利组织人工智能…