基于python对疫情数据爬取及可视化
Posted 小黄同学AC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于python对疫情数据爬取及可视化相关的知识,希望对你有一定的参考价值。
先爬取疫情数据:
1.打开网页,鼠标右键,点检查,然后点网络,在标头位置可以得到url和User-Agent:
2.在预览的位置可以找需要爬取的数据
# -*-coding:utf-8 -*-
# @Time : 15:38
# @Author: 黄荣津
import time
import requests
import json
import xlwings as xw
headers =
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/96.0.4664.93 Safari/537.36'
url='https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=statisGradeCityDetail,diseaseh5Shelf'
response = requests.get(url, headers=headers)
# print(response.status_code) #如果是200则打印成功,其他数字则打印失败
#print(response.json())
json_data = response.json()['data']['diseaseh5Shelf']['areaTree'][0]['children']
# print(json_data)
wb = xw.Book() # 相当打开excel
sht = wb.sheets('sheet1') # 在excel中建立一个表
# #A1,B1''' 相当于excel的列名
sht.range('A1').value = '地区'
sht.range('B1').value = '新增确诊'
sht.range('C1').value = '治愈人数'
sht.range('D1').value = '死亡人数'
sht.range('E1').value = '现存人数'
sht.range('F1').value = '累计确诊'
for i in range(34):
earth_data = json_data[i]
# print(earth_data)
province = earth_data['name']
sht.range(f'Ai + 2').value = province
today_confirm = json.dumps(earth_data['today']['confirm'])
sht.range(f'Bi + 2').value = today_confirm
total_dead = json.dumps(earth_data['total']['dead'])
sht.range(f'Di + 2').value = total_dead
total_heal = json.dumps(earth_data['total']['heal'])
sht.range(f'Ci + 2').value = total_heal
total_nowconfirm=json.dumps(earth_data['total']['nowConfirm'])
sht.range(f'Ei + 2').value = total_nowconfirm
total_confirm = json.dumps(earth_data['total']['confirm'])
sht.range(f'Fi + 2').value = total_confirm
print("地区:" + province, "新增确诊:" + today_confirm,'治愈人数'+total_heal, "死亡:" + total_dead,"现存人数:"+total_nowconfirm, "累计确诊:" + total_confirm)
2.爬取成功,录入excel表格中
3.对数据可视化绘制地图
# -*-coding:utf-8 -*-
# @Time : 21:59
# @Author: 黄荣津
# @File : Python读取excel省份数据绘制地图.py
# @Software: PyCharm
import pandas
from pyecharts.charts import Map, Geo
from pyecharts import options as opts
# 导入数据
data = pandas.read_excel(r'data.xlsx', sheet_name='Sheet1')
# 将数据转换为二元的列表
list1 = list(zip(data['地区'],data['现存人数']))
# 创建一个地图对象
map_1 = Map() # 对全局进行设置
map_1.set_global_opts(
# 设置标题
title_opts=opts.TitleOpts(title="全国疫情地图"), visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
pieces=[
"min": 1000, "label": '>10000人',
"color": "#6F171F",
# 不指定 max,表示 max 为无限大(Infinity)
"min": 5000, "max": 10000,
"label": '5000-10000人',
"color": "#C92C34",
"min": 1000, "max": 4990,
"label": '1000-4990人',
"color": "#E35B52",
"min": 100, "max": 990,
"label": '100-990人',
"color": "#F39E86",
"min": 10, "max": 99,
"label": '10-99人',
"color": "pink",
"min": 1, "max": 9,
"label": '1-9人',
"color": "#FDEBD0"]))
# 使用add方法添加地图数据与地图类型
map_1.add("现有确诊人数",list1, maptype="china",is_map_symbol_show = False) #不显示红点
# 地图创建完成后,通过render()方法可以将地图渲染为html
map_1.render('全国各省现有确诊人数疫情地图.html')
以上是关于基于python对疫情数据爬取及可视化的主要内容,如果未能解决你的问题,请参考以下文章
利用python爬取新型冠状肺炎疫情发生以来的实时数据,并进行可视化展示。
用python爬取全国和全球疫情数据,并进行可视化分析(过程详细代码可运行)
Python 疫情数据可视化(爬虫+数据可视化)(Jupyter环境)