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使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
wxPython定时器wx.Timer简单应用实例
Jun 03 Python
在 Python 应用中使用 MongoDB的方法
Jan 05 Python
用python与文件进行交互的方法
Mar 01 Python
tensorflow: 查看 tensor详细数值方法
Jun 13 Python
Python笔试面试题小结
Sep 07 Python
pygame实现贪吃蛇游戏(下)
Oct 29 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
tf.concat中axis的含义与使用详解
Feb 07 Python
Linux安装Python3如何和系统自带的Python2并存
Jul 23 Python
python3.5的包存放的具体路径
Aug 16 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 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 discuz 主题表和回帖表的设计
2009/03/13 PHP
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
PHP取余函数介绍MOD(x,y)与x%y
2014/05/15 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
Jquery replace 字符替换实现代码
2010/12/02 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
jQuery函数map()和each()介绍及异同点分析
2014/11/08 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
easyui validatebox验证
2016/04/29 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
Python处理CSV与List的转换方法
2018/04/19 Python
Python使用requests提交HTTP表单的方法
2018/12/26 Python
详解python读取image
2019/04/03 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
python和JavaScript哪个容易上手
2020/06/23 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
酒店服务与管理毕业生求职信
2013/11/02 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
仓库管理制度
2014/01/21 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
高考学习决心书
2015/02/04 职场文书
消防宣传语大全
2015/07/13 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript