Python实现疫情地图可视化


Posted in Python onFebruary 05, 2021

一、 json模块

       JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

  • json.loads():将json格式的str转化成python的数据格式;
  • json.loads():将python的数据格式(字典或列表)转化成json格式;
# 如何将json数据解析成我们所熟悉的Python数据类型?
import json
# 将json格式的str转化成python的数据格式:字典
dic = json.loads('{"name":"Tom","age":23}')
res = json.loads('["name","age","gender"]')
print(f'利用loads将json字符串转化成Python数据类型{dic}',type(dic))
print(f'利用loads将json字符串转化成Python数据类型{res}',type(res))

Python实现疫情地图可视化

dics = {"name":"Tom","age":23}
result = json.dumps(dics)
print(type(result))
result

Python实现疫情地图可视化

二、通过Python实现疫情地图可视化

需求:爬取疫情的数据、如何处理json数据以及根据疫情数据如何利用pyecharts绘制疫情地图。

Python实现疫情地图可视化

Python实现疫情地图可视化

1.数据的获取(基于request模块)

import requests
import json
# 国内疫情数据
China_url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
headers = {
 # 浏览器伪装
 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
 'referer': 'https://news.qq.com/',
}
# 发起get请求,获取响应数据
response = requests.get(China_url,headers=headers).json()
data = json.loads(response['data'])
# 保存数据
with open('./2021-02-03国内疫情.json','w',encoding='utf-8') as f:
 # 不采用ASCII编码
 f.write(json.dumps(data,ensure_ascii=False,indent=2))

爬取的数据保存格式为json,开头的部分数据如下:

Python实现疫情地图可视化

2.将json格式的数据保存到Excel

        无论是json数据存储的,还是Python的基本数据类型存储的,对于数据分析都不是很友好,所以我们可以将其数据存储类型转化为pandas的DataFrame类型,因为DataFrame和Excel可以更好的相互转换。

生成的数据模式如下:

Python实现疫情地图可视化

将以上的数据进行处理,获得Excel表一样规范的数据格式。

import pandas as pd
chinaTotalData = pd.DataFrame(china_citylist)

# 将整体数据chinaTotalData中的today和total数据添加到DataFrame中
# 处理total字典里面的各个数据项
# ======================================================================
confirmlist = []
suspectlist = []
deadlist = []
heallist = []
deadRatelist = []
healRatelist = []
# print(chinaTotalData['total'].values.tolist()[0])
for value in chinaTotalData['total'].values.tolist():
 confirmlist.append(value['confirm'])
 suspectlist.append(value['suspect'])
 deadlist.append(value['dead'])
 heallist.append(value['heal'])
 deadRatelist.append(value['deadRate'])
 healRatelist.append(value['healRate'])

chinaTotalData['confirm'] = confirmlist
chinaTotalData['suspect'] = suspectlist
chinaTotalData['dead'] = deadlist
chinaTotalData['heal'] = heallist
chinaTotalData['deadRate'] = deadRatelist
chinaTotalData['healRate'] = healRatelist
# ===================================================================
# 创建全国today数据
today_confirmlist = []
today_confirmCutslist = []
for value in chinaTotalData['today'].values.tolist():
 today_confirmlist.append(value['confirm'])
 today_confirmCutslist.append(value['confirmCuts'])

chinaTotalData['today_confirm'] = today_confirmlist
chinaTotalData['today_confirmCuts'] = today_confirmCutslist
# ==================================================================
# 删除total、today两列
chinaTotalData.drop(['total','today'],axis=1,inplace=True)
chinaTotalData.head()
# 将其保存到Excel中
chinaTotalData.to_excel('2021-02-03国内疫情.xlsx',index=False)

处理好的数据结构如下表:

Python实现疫情地图可视化

3.应用pyecharts进行数据可视化

        pyecharts是一款将python与echarts结合的强大的数据可视化工具。绘制出来的图比Python的Matplotlib简单美观。使用之前需要在Python环境中按照pycharts。在终端中输入命令:pip install pyecharts

利用pyecharts绘制疫情地图
        根据上面的疫情数据,我们可以利用其画出全国的疫情地图
在绘制前,我们需要安装echarts的地图包(可根据不同的地图需求进行安装)

pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-misc-pypkg
pip install echarts-china-countries-pypkg
pip install echarts-united-kingdom-pypkg
# 导入对应的绘图工具包
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Map

df = pd.read_excel('./2021-02-03国内疫情.xlsx')
# 1.根据绘制国内总疫情图(确诊)
data = df.groupby(by='province',as_index=False).sum()
data_list = list(zip(data['province'].values.tolist(),data['confirm'].values.tolist()))
# 数据格式[(黑龙江,200),(吉林,300),...]

def map_china() -> Map:
 c = (
  Map()
  .add(series_name="确诊病例",data_pair=data_list,maptype='china')
  .set_global_opts(
   title_opts = opts.TitleOpts(title='疫情地图'),
   visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
     pieces = [{"max":9, "min":0, "label":"0-9","color":"#FFE4E1"},
       {"max":99, "min":10, "label":"10-99","color":"#FF7F50"},
       {"max":499, "min":100, "label":"100-4999","color":"#F08080"},
       {"max":999, "min":500, "label":"500-999","color":"#CD5C5C"},
       {"max":9999, "min":1000, "label":"1000-9999","color":"#990000"},
       {"max":99999, "min":10000, "label":"10000-99999","color":"#660000"},]
   )
  )
 )
 return c

d_map = map_china()
d_map.render("mapEchrts.html")

最终的运行效果如下:

Python实现疫情地图可视化

注:以上的运行环境是Python3.7版本,IDE是基于浏览器端的Jupter Notebook。

以上就是Python实现疫情地图可视化的详细内容,更多关于python 疫情地图可视化的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中的hypot()方法使用简介
May 18 Python
Python中getattr函数和hasattr函数作用详解
Jun 14 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
Python反爬虫技术之防止IP地址被封杀的讲解
Jan 09 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
PyQt4编程之让状态栏显示信息的方法
Jun 18 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
OpenCV+Python--RGB转HSI的实现
Nov 27 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
Apr 16 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
May 18 Python
python实现马丁策略回测3000只股票的实例代码
Jan 22 Python
详解Python为什么不用设计模式
Jun 24 Python
pycharm 实现调试窗口恢复
Feb 05 #Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 #Python
Pycharm 跳转回之前所在页面的操作
Feb 05 #Python
python自动化办公操作PPT的实现
Feb 05 #Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 #Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 #Python
Python环境搭建过程从安装到Hello World
Feb 05 #Python
You might like
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
php防止用户重复提交表单
2015/11/02 PHP
Laravel 5.3 学习笔记之 错误&日志
2016/08/28 PHP
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
node.js中的http.response.removeHeader方法使用说明
2014/12/14 Javascript
layui导航栏实现代码
2017/05/19 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
微信小程序实现留言板
2018/10/31 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
python制作小说爬虫实录
2017/08/14 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
Python中作用域的深入讲解
2018/12/10 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
巧克力蛋糕店创业计划书
2014/01/14 职场文书
给物业的表扬信
2014/01/21 职场文书
关于逃课的检讨书
2014/01/23 职场文书
《花木兰》教学反思
2014/04/09 职场文书
校企合作协议书
2014/04/16 职场文书
大专学生求职信
2014/07/04 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
竞聘书的秘诀
2019/04/02 职场文书
Python基础知识之变量的详解
2021/04/14 Python
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis