「Python」使用Pyecharts生成疫情分布地图

Python020

「Python」使用Pyecharts生成疫情分布地图,第1张

最近受江苏疫情影响,好多小伙伴都居家办公咯!为了密切关注疫情动态,最近写了爬取疫情分布的脚本,参考上篇链接。

既然我们已经获得了相应的江苏各个地级市的疫情数据,那么我们如何来使用Python实现将数据可视化在地图上呢?

Apache Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

简单来说,pyecharts具有以下特性:

3. Pyecharts 安装

使用pip进行安装如下:

因为我们需要使用pycharts绘制地图,此时我们还需要安装相应的地图文件包:

其中:

echarts-countries-pypkg 包为全球国家地图

echarts-china-provinces-pypkg包为中国省级地图

echarts-china-cities-pypkg 包为中国市级地图

安装完上述绘制地图相关的python包后,我们接下来开始画疫情分布地图。

首先,我们先来查看一段Pyecharts相关实现:

上述代码解释如下:

运行后会在当前目录生成 map_jiangsu_0803.html,用浏览器打开后结果如下:

当鼠标移动到对应区域后,会显示出对应地级市今日新增人数。

上述脚本虽然可以实现我们的功能,但是颜色灰灰的,太过于单调,接下来我们来想办法进行美化,实现代码如下:

代码解释如下:

运行后会在当前目录生成 map_jiangsu_0803_new.html,用浏览器打开后结果如下:

同理我们可以得到现有确诊人数分布如下:

进而我们可以得到累计确诊人数分布如下:

爬取国内疫情数据。data_download(),引用包requests、json。1)访问网站获取数据;2)保存数据成json文件

将数据转存到excel。cpdata_toexcel(),引用包openpyxl、json。

1)从json文件中抽取所需数据,字段需求:省份、地市、总确诊人数、总疑似病例、总死亡人数。

2)创建Excel表,数据保存。

读取文件数据画疫情地图。show_data(),引用包pandas、pyecharts。

import requests

from bs4 import BeautifulSoup

import re

import json

# 1.发送请求,获取疫情首页(数据来源于丁香园)

response = requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia')

home_page = response.content.decode()

# 2.从疫情首页提取最近一日数据

soup = BeautifulSoup(home_page, 'lxml')

script = soup.find(id='getAreaStat')

text = script.string

# 3.提取数据获取json格式数据

json_str = re.findall(r'\[.+\]', text)[0]

# 4.把json格式转换为python类型

last_day_corona_virus = json.loads(json_str)

# 5.以json格式保存最近一日数据

with open('data/last_day_coronavirus.json', 'w') as fp:

json.dump(last_day_corona_virus, fp, ensure_ascii=False)