Python画新冠肺炎国内和世界各国累计确诊数量热图!某国破百万了
新冠肺炎国内疫情基本控制住,很多地方都开始摘下口罩了。但是国外的疫情依然处于爆发期,特别是美国,截止目前其累计确诊数量已突破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画新冠肺炎国内和世界各国累计确诊数量热图!某国破百万了相关推荐
- python 绘制新冠肺炎疫情地图
参考链接: (1)实时更新|新冠肺炎疫情地图 https://news.sina.cn/zt_d/yiqing0121 (2)实时的可视化疫情地图 https://blog.csdn.net/weix ...
- 含最新数据! 使用Python检测新冠肺炎疫情拐点
注:本文案例仅供技术学习,不代表研究性观点. 本文对应代码.数据及文献资料已上传至Github仓库https://github.com/CNFeffery/DataScienceStudyNotes ...
- 抗击新冠肺炎,如何进行实时动态时序图谱建模与分析?
作者 | 闭雨哲 来源 | ThutmoseAI 背景介绍 新冠肺炎是一种具有最长达24天潜伏期的新型突发性传染疾病,这种特性给疫情防控带来了巨大的挑战,随着感染规模的不断扩增,简单的人为治理已不太奏 ...
- 爬取并处理中国新冠肺炎疫情数据
项目名称: 爬取并处理中国新冠肺炎疫情数据 目的: 通过Python爬取中国新冠肺炎疫情数据,存入Excel,对此数据分析并进行可视化,制作查询中国疫情情况的GUI界面. 具体内容: 通过Python ...
- AAAI 2021:一种跨城市迁移的新冠肺炎高危社区发现框架
新冠肺炎已经在世界范围内广泛传播,严重影响着人们的日常生活.面对新冠肺炎,人为干预的空间隔离手段(如限制出行或集中隔离)已经被证明其有效性.但是,确诊病例的统计往往是滞后且粗粒度的,比如对于尚未确诊的 ...
- 2021-2027全球与中国新冠肺炎安全和防护产品市场现状及未来发展趋势
2021-2027全球与中国新冠肺炎安全和防护产品市场现状及未来发展趋势 COVID-19安全和预防产品是一系列保健和疾病预防产品,涵盖各种设备. 它旨在准备,预防和应对Covid-19的紧急情况并进 ...
- 【Python】2020年美国新冠肺炎疫情数据分析
2020年美国新冠肺炎疫情数据分析 一. 需求描述 二. 环境介绍 三. 数据来源描述 四. 数据上传及上传结果查看 五.数据处理过程描述 1.数据集下载 2.格式转换 3.启动Hadoop集群 4. ...
- 【项目】新冠肺炎疫情期间网民情绪识别——Python文本分类
目录 任务描述 数据描述 读取数据 数据预处理 可视化 word2vec 模型框架及拟合 结果展示 改进与思考 说明 任务描述 2019新型冠状病毒(COVID-19)感染的肺炎疫情发生对人们生活生产 ...
- 数据看世界|9幅动态图5个数据指标带你了解新冠肺炎的全球现状!!
点击上方 蓝字 关注我们 PS:本来小编是打算全部都放动态图的,奈何动态图太大,超过了公众号正篇文章不超过10M的限制,所以小编就只能放静态图了,如果大家需要动态图,文末有动态图领取方式. 随着冬季气 ...
- Python数据分析高薪实战第十天 EDA实战-全球新冠肺炎确诊病例趋势分析
27 初识 EDA:全球新冠肺炎确诊病例趋势分析 从本讲开始,我们会通过四个具体的案例来将我们之前学习的 Python 数据分析方面的知识全都串起来.一方面能够融会贯通,另一方面也能帮你掌握数据分析基 ...
最新文章
- 将Nodelist快速转换为Array数组
- AB1601 IO口反应延时的问题
- CodeForces - 560E Gerald and Giant Chess(组合数学+dp)
- ubuntu20.04 sshd 配置root 登录
- SAP Spartacus org unit页面的三种focus border及细节讨论
- 剑指offer之左旋转字符串
- Linux运维常见问题解决集锦【转】
- 95-235-070-源码-task-OneInputStreamTask
- 如何让原本的密码只执行一次_如何在虚拟机中正确的第一次启动Linux系统
- JAVA日期时间相关库
- Springboot2.x 集成 jedis和spring-boot-starter-data-redis的性能测试比较(Jedis完胜:附带源码)
- Linux系统下如何使用中文输入法
- 中鸣机器人编程教程 c 语言,中鸣教育机器人简介.doc
- CentOS7 安装 oracle 10g
- html加页面脚注,javascript – 打印HTML每页脚注
- 大话西游2玩家最多的服务器,大话西游2最火爆的服务器凌烟阁,玩家一次预约成功...
- IIS部署,发布网站精选
- IP地址分类(A类 B类 C类 D类 E类)
- 绘制神经元的结构模式图,神经元结构示意图简易
- ACM Southwestern European Regional Programming Contest (SWERC) 2017 J 智商题(模m同余)