新冠肺炎国内疫情基本控制住,很多地方都开始摘下口罩了。但是国外的疫情依然处于爆发期,特别是美国,截止目前其累计确诊数量已突破110w。五一节北京柳絮杨絮满天飞,不适合外出。在家心血来潮,献丑画一下各地区新冠肺炎累计确诊数量热图。

废话不多说,代码如下:

一、中国

1、获取数据:

import requests as rq
import re
import numpy as np
import pandas as pd# 数据来源:新华网
# http://my-h5news.app.xinhuanet.com/h5activity/yiqingchaxun/index.html
url = 'http://fms.news.cn/swf/2020_sjxw/2_1_xgyq/js/data.js'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
}# 网页数据
home_rt = rq.get(url, headers=headers).text# 提取日期
dates = re.search('_g_map_data_days = \[(.*?)\]', home_rt).group(1)
dates = re.findall('\'(.*?)\'', dates)
# # 日更日期
# dates = re.search('_g_dt_date = \[(.*?)\]', home_rt).group(1)
# dates = re.findall('\'(.*?)\'', dates)# 提取省份
provinces = re.search('_g_map_data_province = \[(.*?)\];', home_rt).group(1)
provinces = re.findall('\'(.*?)\'', provinces)# 提取数据
data = re.search('_g_map_data_data =\[(.*?)\];', home_rt, re.S).group(1)
data = re.findall('\[(.*?)\]', data, re.S)
data = [i.split(',') for i in data]
data = np.array(data).T# 生成表格
data = pd.DataFrame(data, columns=dates, index=provinces)
data = data.astype('int')  # 转换str类型为int型
last_colum = data.columns[-1]
data = data.sort_values(last_colum, ascending=False)

得到如下dataframe格式数据:

2、画图

本次画图采用的是pyecharts:

pyecharts是基于echarts,是百度的开源可视化工具,包含多种酷炫工具,并且是交互式的,图像可以用鼠标进行拖动放大缩小等,强烈推荐。

1、 github源码(包含安装方式,最好选择源码安装) 。2、 介绍文档 。3、 官方示例代码

from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Fakerprovince_data = []  # 生成pyecharts数据格式
for p_i, pro_name in enumerate(data.index):province_data.append([pro_name, int(data.iloc[p_i, -1])])c = (Map(opts.InitOpts(width='600px', height='400px', bg_color='white'))  # 创建地图对象.add('累计确诊', province_data, "china", is_map_symbol_show=False)  # 添加数据,选择中国地图
#     .set_series_opts(label_opts=opts.LabelOpts(is_show=False))  # 用于显示各省份名字.set_global_opts(title_opts=opts.TitleOpts(title="中国各省新冠肺炎累计确诊数量", pos_left='center'),  # 设置标题图例等信息legend_opts=opts.LegendOpts(is_show=False),visualmap_opts=opts.VisualMapOpts(is_piecewise = True,pieces = [{"max": 100, 'color': '#ffeead', 'label': '小于100人'},{"min": 100, "max": 500, 'color': '#f29c2b', 'label': '100-500人'},{"min": 500, "max": 1000, 'color': '#d9534f', 'label': '500-1000人'},{"min": 1000, "max": 2000, "color": '#de4307', 'label': '1000-2000人'},{"min": 2000, 'color': '#dd0a35', 'label': '2000人以上'}]))
)
c.render_notebook()

输出图像如下:

二、世界地图

1、世界各国中英文映射关系(点击展开)

nameMap = {'Singapore':'新加坡','Dominican Rep.':'多米尼加','Palestine':'巴勒斯坦','Bahamas':'巴哈马','Timor-Leste':'东帝汶','Afghanistan':'阿富汗','Guinea-Bissau':'几内亚比绍',"Côte d'Ivoire":'科特迪瓦','Siachen Glacier':'锡亚琴冰川',"Br. Indian Ocean Ter.":'英属印度洋领土','Angola':'安哥拉','Albania':'阿尔巴尼亚','United Arab Emirates':'阿联酋','Argentina':'阿根廷','Armenia':'亚美尼亚','French Southern and Antarctic Lands':'法属南半球和南极领地','Australia':'澳大利亚','Austria':'奥地利','Azerbaijan':'阿塞拜疆','Burundi':'布隆迪','Belgium':'比利时','Benin':'贝宁','Burkina Faso':'布基纳法索','Bangladesh':'孟加拉国','Bulgaria':'保加利亚','The Bahamas':'巴哈马','Bosnia and Herz.':'波斯尼亚和黑塞哥维那','Belarus':'白俄罗斯','Belize':'伯利兹','Bermuda':'百慕大','Bolivia':'玻利维亚','Brazil':'巴西','Brunei':'文莱','Bhutan':'不丹','Botswana':'博茨瓦纳','Central African Rep.':'中非','Canada':'加拿大','Switzerland':'瑞士','Chile':'智利','China':'中国','Ivory Coast':'象牙海岸','Cameroon':'喀麦隆','Dem. Rep. Congo':'刚果民主共和国','Congo':'刚果','Colombia':'哥伦比亚','Costa Rica':'哥斯达黎加','Cuba':'古巴','N. Cyprus':'北塞浦路斯','Cyprus':'塞浦路斯','Czech Rep.':'捷克','Germany':'德国','Djibouti':'吉布提','Denmark':'丹麦','Algeria':'阿尔及利亚','Ecuador':'厄瓜多尔','Egypt':'埃及','Eritrea':'厄立特里亚','Spain':'西班牙','Estonia':'爱沙尼亚','Ethiopia':'埃塞俄比亚','Finland':'芬兰','Fiji':'斐','Falkland Islands':'福克兰群岛','France':'法国','Gabon':'加蓬','United Kingdom':'英国','Georgia':'格鲁吉亚','Ghana':'加纳','Guinea':'几内亚','Gambia':'冈比亚','Guinea Bissau':'几内亚比绍','Eq. Guinea':'赤道几内亚','Greece':'希腊','Greenland':'格陵兰','Guatemala':'危地马拉','French Guiana':'法属圭亚那','Guyana':'圭亚那','Honduras':'洪都拉斯','Croatia':'克罗地亚','Haiti':'海地','Hungary':'匈牙利','Indonesia':'印度尼西亚','India':'印度','Ireland':'爱尔兰','Iran':'伊朗','Iraq':'伊拉克','Iceland':'冰岛','Israel':'以色列','Italy':'意大利','Jamaica':'牙买加','Jordan':'约旦','Japan':'日本','Kazakhstan':'哈萨克斯坦','Kenya':'肯尼亚','Kyrgyzstan':'吉尔吉斯斯坦','Cambodia':'柬埔寨','Korea':'韩国','Kosovo':'科索沃','Kuwait':'科威特','Lao PDR':'老挝','Lebanon':'黎巴嫩','Liberia':'利比里亚','Libya':'利比亚','Sri Lanka':'斯里兰卡','Lesotho':'莱索托','Lithuania':'立陶宛','Luxembourg':'卢森堡','Latvia':'拉脱维亚','Morocco':'摩洛哥','Moldova':'摩尔多瓦','Madagascar':'马达加斯加','Mexico':'墨西哥','Macedonia':'马其顿','Mali':'马里','Myanmar':'缅甸','Montenegro':'黑山','Mongolia':'蒙古','Mozambique':'莫桑比克','Mauritania':'毛里塔尼亚','Malawi':'马拉维','Malaysia':'马来西亚','Namibia':'纳米比亚','New Caledonia':'新喀里多尼亚','Niger':'尼日尔','Nigeria':'尼日利亚','Nicaragua':'尼加拉瓜','Netherlands':'荷兰','Norway':'挪威','Nepal':'尼泊尔','New Zealand':'新西兰','Oman':'阿曼','Pakistan':'巴基斯坦','Panama':'巴拿马','Peru':'秘鲁','Philippines':'菲律宾','Papua New Guinea':'巴布亚新几内亚','Poland':'波兰','Puerto Rico':'波多黎各','Dem. Rep. Korea':'朝鲜','Portugal':'葡萄牙','Paraguay':'巴拉圭','Qatar':'卡塔尔','Romania':'罗马尼亚','Russia':'俄罗斯','Rwanda':'卢旺达','W. Sahara':'西撒哈拉','Saudi Arabia':'沙特阿拉伯','Sudan':'苏丹','S. Sudan':'南苏丹','Senegal':'塞内加尔','Solomon Is.':'所罗门群岛','Sierra Leone':'塞拉利昂','El Salvador':'萨尔瓦多','Somaliland':'索马里兰','Somalia':'索马里','Serbia':'塞尔维亚','Suriname':'苏里南','Slovakia':'斯洛伐克','Slovenia':'斯洛文尼亚','Sweden':'瑞典','Swaziland':'斯威士兰','Syria':'叙利亚','Chad':'乍得','Togo':'多哥','Thailand':'泰国','Tajikistan':'塔吉克斯坦','Turkmenistan':'土库曼斯坦','East Timor':'东帝汶','Trinidad and Tobago':'特里尼达和多巴哥','Tunisia':'突尼斯','Turkey':'土耳其','Tanzania':'坦桑尼亚','Uganda':'乌干达','Ukraine':'乌克兰','Uruguay':'乌拉圭','United States':'美国','Uzbekistan':'乌兹别克斯坦','Venezuela':'委内瑞拉','Vietnam':'越南','Vanuatu':'瓦努阿图','West Bank':'西岸','Yemen':'也门','South Africa':'南非','Zambia':'赞比亚','Zimbabwe':'津巴布韦'}View Code

2、处理数据(新华网数据)

foreigh_rt = re.search('国外表格(.*)', home_rt, re.S).group(1)
foreigh_data = re.findall('cityName"\>(.*?)\</p\>.*?cityQZ"\>(.*?)\</p\>.*?cityXZQZ"\>(.*?)\</p\>.*?citySWSJ"\>(.*?)\</p\>', foreigh_rt, re.S)
foreigh_data = pd.DataFrame(foreigh_data)
foreigh_data.columns = ['国家', '累计确诊', '新增', '累计死亡']
foreigh_data[foreigh_data=='-'] = 0country_name = pd.DataFrame([nameMap.values(), nameMap.keys()]).T
country_name.columns = ['国家', 'name']
foreigh_data = pd.merge(foreigh_data, country_name, on='国家', how='outer')  # 替换中文名字为英文
foreigh_data = foreigh_data.fillna(0)indexes = list(foreigh_data.iloc[:, -1])
foreigh_data = foreigh_data.drop(['国家', 'name'], axis=1)
foreigh_data.index = indexescountry_data = []
for cou_i, coun_index in enumerate(foreigh_data.index):country_data.append([coun_index, int(foreigh_data.iloc[cou_i, 0])])
country_data.append(['China', int(data.iloc[:, -1].sum())])  # 添加中国数据

3、画图

c = (Map(opts.InitOpts(width='800px', height='400px', bg_color='white')).add("累计确诊", country_data, "world", is_map_symbol_show=False).set_series_opts(label_opts=opts.LabelOpts(is_show=False))  # 不显示国家名字.set_global_opts(title_opts=opts.TitleOpts(title="世界新冠肺炎累计确诊热图", pos_left='center'),legend_opts=opts.LegendOpts(is_show=False),visualmap_opts=opts.VisualMapOpts(is_piecewise = True,pieces = [{"max": 1000, 'color': '#ffeead', 'label': '1k人以下'},{"min": 1000, "max": 50000, 'color': '#f29c2b', 'label': '1k~5w人'},{"min": 50000, "max": 200000, 'color': '#d9534f', 'label': '5w-20w人'},{"min": 200000, "max": 1000000, "color": '#F71E35', 'label': '20w-100w人'},{"min": 1000000, 'color': '#C00000', 'label': '100w以上'}]))
)c.render_notebook()

输出图像如下:

想要获取视频案例源码教程加群:850591259

Python画新冠肺炎国内和世界各国累计确诊数量热图!某国破百万了相关推荐

  1. python 绘制新冠肺炎疫情地图

    参考链接: (1)实时更新|新冠肺炎疫情地图 https://news.sina.cn/zt_d/yiqing0121 (2)实时的可视化疫情地图 https://blog.csdn.net/weix ...

  2. 含最新数据! 使用Python检测新冠肺炎疫情拐点

    注:本文案例仅供技术学习,不代表研究性观点. 本文对应代码.数据及文献资料已上传至Github仓库https://github.com/CNFeffery/DataScienceStudyNotes ...

  3. 抗击新冠肺炎,如何进行实时动态时序图谱建模与分析?

    作者 | 闭雨哲 来源 | ThutmoseAI 背景介绍 新冠肺炎是一种具有最长达24天潜伏期的新型突发性传染疾病,这种特性给疫情防控带来了巨大的挑战,随着感染规模的不断扩增,简单的人为治理已不太奏 ...

  4. 爬取并处理中国新冠肺炎疫情数据

    项目名称: 爬取并处理中国新冠肺炎疫情数据 目的: 通过Python爬取中国新冠肺炎疫情数据,存入Excel,对此数据分析并进行可视化,制作查询中国疫情情况的GUI界面. 具体内容: 通过Python ...

  5. AAAI 2021:一种跨城市迁移的新冠肺炎高危社区发现框架

    新冠肺炎已经在世界范围内广泛传播,严重影响着人们的日常生活.面对新冠肺炎,人为干预的空间隔离手段(如限制出行或集中隔离)已经被证明其有效性.但是,确诊病例的统计往往是滞后且粗粒度的,比如对于尚未确诊的 ...

  6. 2021-2027全球与中国新冠肺炎安全和防护产品市场现状及未来发展趋势

    2021-2027全球与中国新冠肺炎安全和防护产品市场现状及未来发展趋势 COVID-19安全和预防产品是一系列保健和疾病预防产品,涵盖各种设备. 它旨在准备,预防和应对Covid-19的紧急情况并进 ...

  7. 【Python】2020年美国新冠肺炎疫情数据分析

    2020年美国新冠肺炎疫情数据分析 一. 需求描述 二. 环境介绍 三. 数据来源描述 四. 数据上传及上传结果查看 五.数据处理过程描述 1.数据集下载 2.格式转换 3.启动Hadoop集群 4. ...

  8. 【项目】新冠肺炎疫情期间网民情绪识别——Python文本分类

    目录 任务描述 数据描述 读取数据 数据预处理 可视化 word2vec 模型框架及拟合 结果展示 改进与思考 说明 任务描述 2019新型冠状病毒(COVID-19)感染的肺炎疫情发生对人们生活生产 ...

  9. 数据看世界|9幅动态图5个数据指标带你了解新冠肺炎的全球现状!!

    点击上方 蓝字 关注我们 PS:本来小编是打算全部都放动态图的,奈何动态图太大,超过了公众号正篇文章不超过10M的限制,所以小编就只能放静态图了,如果大家需要动态图,文末有动态图领取方式. 随着冬季气 ...

  10. Python数据分析高薪实战第十天 EDA实战-全球新冠肺炎确诊病例趋势分析

    27 初识 EDA:全球新冠肺炎确诊病例趋势分析 从本讲开始,我们会通过四个具体的案例来将我们之前学习的 Python 数据分析方面的知识全都串起来.一方面能够融会贯通,另一方面也能帮你掌握数据分析基 ...

最新文章

  1. 将Nodelist快速转换为Array数组
  2. AB1601 IO口反应延时的问题
  3. CodeForces - 560E Gerald and Giant Chess(组合数学+dp)
  4. ubuntu20.04 sshd 配置root 登录
  5. SAP Spartacus org unit页面的三种focus border及细节讨论
  6. 剑指offer之左旋转字符串
  7. Linux运维常见问题解决集锦【转】
  8. 95-235-070-源码-task-OneInputStreamTask
  9. 如何让原本的密码只执行一次_如何在虚拟机中正确的第一次启动Linux系统
  10. JAVA日期时间相关库
  11. Springboot2.x 集成 jedis和spring-boot-starter-data-redis的性能测试比较(Jedis完胜:附带源码)
  12. Linux系统下如何使用中文输入法
  13. 中鸣机器人编程教程 c 语言,中鸣教育机器人简介.doc
  14. CentOS7 安装 oracle 10g
  15. html加页面脚注,javascript – 打印HTML每页脚注
  16. 大话西游2玩家最多的服务器,大话西游2最火爆的服务器凌烟阁,玩家一次预约成功...
  17. IIS部署,发布网站精选
  18. IP地址分类(A类 B类 C类 D类 E类)
  19. 绘制神经元的结构模式图,神经元结构示意图简易
  20. ACM Southwestern European Regional Programming Contest (SWERC) 2017 J 智商题(模m同余)

热门文章

  1. 安卓加密视频播放器使用教程
  2. sap服务器安全证书,SAP安全登录单
  3. cc2530c语言教程,cc2530程序设计实例之CC2530 RF部分使用—实现点对点收发 - 全文...
  4. Linux配置中文输入法
  5. SVN安装以及使用教程
  6. 抖音自动上号源码分享
  7. 如何评价一个专业PKM软件?
  8. 如何用手机编程Python?
  9. PyCharm免费版安装使用
  10. Win7 64 NVMe驱动安装