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中列表和元组的相关语句和方法讲解
Aug 20 Python
使用Python读写文本文件及编写简单的文本编辑器
Mar 11 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
用Python实现读写锁的示例代码
Nov 05 Python
python opencv minAreaRect 生成最小外接矩形的方法
Jul 01 Python
Python封装成可带参数的EXE安装包实例
Aug 24 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
Python socket非阻塞模块应用示例
Sep 12 Python
Django连接数据库并实现读写分离过程解析
Nov 13 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 Python
Python导入数值型Excel数据并生成矩阵操作
Jun 09 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
DOMXML函数笔记
2006/10/09 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
微信小程序webview实现长按点击识别二维码功能示例
2019/01/24 Javascript
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
对Django url的几种使用方式详解
2019/08/06 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
Pycharm最常用的快捷键及使用技巧
2020/03/05 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
机械制造毕业生求职信
2014/03/03 职场文书
自我鉴定书
2014/03/24 职场文书
安全生产目标责任书
2014/04/14 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
python中对列表的删除和添加方法详解
2022/02/24 Python
十大最强格斗系宝可梦,超梦X仅排第十,第二最重格斗礼仪
2022/03/18 日漫
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技