前言

我国的疫情已经得到了科学的控制,开始了全面的复工复产,但是国外的疫情却“停不下来”。国外现在可谓就是处于水深火热当中啊,病毒极强的传染性,导致了许多的人都“中招”了,我国已经全面复工复产了,人大代表会议还支持各地的地摊经济,中国的各行各业也开始正常运作起来。

但是现在国外的病例一天就新增12万多例,一天死亡4千多人,死亡人数42多万人,在国外疫情严重的地方,估计已经人心惶惶了吧,不晓得哪天病毒就跑到自个身上,国家又实行封城停工停产,许多中下层的人民估计生活都困难了,很多城市都出现了大萧条。

希望疫情早日得到控制和消除,再重现昔日的繁华!

今天我们来爬取一下截止目前海外的疫情数据,分析一下最新疫情情况,并最终将其在地图上显示。

知识点:

1. 爬虫基本流程
2. json
3. requests
4. pyecharts

开发环境:

Python 3.6
Pycharm

步骤

导入工具

  1. import json
  2. import requests
  3. import jsonpath
  4.  
  5. from pyecharts.charts import Map,Geo
  6. from pyecharts import options as opts
  7. from pyecharts.globals import GeoType,RenderType

确定目标网址

  1. url = 'https://api.inews.qq.com/newsqa/v1/automation/foreign/country/ranklist'

模拟浏览器实现访问url

  1. resp = requests.post(url).text
  2. # print(resp)

从网页源代码中提取数据

获取国家名称

  1. name = jsonpath.jsonpath(data, "$..name")
  2. print(len(name))

获取确诊人数

  1. confirm = jsonpath.jsonpath(data, "$..confirm")
  2. print(len(confirm))

数据处理

  1. a = zip(name, confirm)

可视化

映射国家名字

  1. nameMap = {
  2. 'Singapore Rep.': '新加坡',
  3. 'Dominican Rep.': '多米尼加',
  4. 'Palestine': '巴勒斯坦',
  5. 'Bahamas': '巴哈马',
  6. 'Timor-Leste': '东帝汶',
  7. 'Afghanistan': '阿富汗',
  8. 'Guinea-Bissau': '几内亚比绍',
  9. "Côte d'Ivoire": '科特迪瓦',
  10. 'Siachen Glacier': '锡亚琴冰川',
  11. "Br. Indian Ocean Ter.": '英属印度洋领土',
  12. 'Angola': '安哥拉',
  13. 'Albania': '阿尔巴尼亚',
  14. 'United Arab Emirates': '阿联酋',
  15. 'Argentina': '阿根廷',
  16. 'Armenia': '亚美尼亚',
  17. 'French Southern and Antarctic Lands': '法属南半球和南极领地',
  18. 'Australia': '澳大利亚',
  19. 'Austria': '奥地利',
  20. 'Azerbaijan': '阿塞拜疆',
  21. 'Burundi': '布隆迪',
  22. 'Belgium': '比利时',
  23. 'Benin': '贝宁',
  24. 'Burkina Faso': '布基纳法索',
  25. 'Bangladesh': '孟加拉国',
  26. 'Bulgaria': '保加利亚',
  27. 'The Bahamas': '巴哈马',
  28. 'Bosnia and Herz.': '波斯尼亚和黑塞哥维那',
  29. 'Belarus': '白俄罗斯',
  30. 'Belize': '伯利兹',
  31. 'Bermuda': '百慕大',
  32. 'Bolivia': '玻利维亚',
  33. 'Brazil': '巴西',
  34. 'Brunei': '文莱',
  35. 'Bhutan': '不丹',
  36. 'Botswana': '博茨瓦纳',
  37. 'Central African Rep.': '中非共和国',
  38. 'Canada': '加拿大',
  39. 'Switzerland': '瑞士',
  40. 'Chile': '智利',
  41. 'China': '中国',
  42. 'Ivory Coast': '象牙海岸',
  43. 'Cameroon': '喀麦隆',
  44. 'Dem. Rep. Congo': '刚果(金)',
  45. 'Congo': '刚果(布)',
  46. 'Colombia': '哥伦比亚',
  47. 'Costa Rica': '哥斯达黎加',
  48. 'Cuba': '古巴',
  49. 'N. Cyprus': '北塞浦路斯',
  50. 'Cyprus': '塞浦路斯',
  51. 'Czech Rep.': '捷克',
  52. 'Germany': '德国',
  53. 'Djibouti': '吉布提',
  54. 'Denmark': '丹麦',
  55. 'Algeria': '阿尔及利亚',
  56. 'Ecuador': '厄瓜多尔',
  57. 'Egypt': '埃及',
  58. 'Eritrea': '厄立特里亚',
  59. 'Spain': '西班牙',
  60. 'Estonia': '爱沙尼亚',
  61. 'Ethiopia': '埃塞俄比亚',
  62. 'Finland': '芬兰',
  63. 'Fiji': '斐',
  64. 'Falkland Islands': '福克兰群岛',
  65. 'France': '法国',
  66. 'Gabon': '加蓬',
  67. 'United Kingdom': '英国',
  68. 'Georgia': '格鲁吉亚',
  69. 'Ghana': '加纳',
  70. 'Guinea': '几内亚',
  71. 'Gambia': '冈比亚',
  72. 'Guinea Bissau': '几内亚比绍',
  73. 'Eq. Guinea': '赤道几内亚',
  74. 'Greece': '希腊',
  75. 'Greenland': '格陵兰',
  76. 'Guatemala': '危地马拉',
  77. 'French Guiana': '法属圭亚那',
  78. 'Guyana': '圭亚那',
  79. 'Honduras': '洪都拉斯',
  80. 'Croatia': '克罗地亚',
  81. 'Haiti': '海地',
  82. 'Hungary': '匈牙利',
  83. 'Indonesia': '印度尼西亚',
  84. 'India': '印度',
  85. 'Ireland': '爱尔兰',
  86. 'Iran': '伊朗',
  87. 'Iraq': '伊拉克',
  88. 'Iceland': '冰岛',
  89. 'Israel': '以色列',
  90. 'Italy': '意大利',
  91. 'Jamaica': '牙买加',
  92. 'Jordan': '约旦',
  93. 'Japan': '日本',
  94. 'Japan': '日本本土',
  95. 'Kazakhstan': '哈萨克斯坦',
  96. 'Kenya': '肯尼亚',
  97. 'Kyrgyzstan': '吉尔吉斯斯坦',
  98. 'Cambodia': '柬埔寨',
  99. 'Korea': '韩国',
  100. 'Kosovo': '科索沃',
  101. 'Kuwait': '科威特',
  102. 'Lao PDR': '老挝',
  103. 'Lebanon': '黎巴嫩',
  104. 'Liberia': '利比里亚',
  105. 'Libya': '利比亚',
  106. 'Sri Lanka': '斯里兰卡',
  107. 'Lesotho': '莱索托',
  108. 'Lithuania': '立陶宛',
  109. 'Luxembourg': '卢森堡',
  110. 'Latvia': '拉脱维亚',
  111. 'Morocco': '摩洛哥',
  112. 'Moldova': '摩尔多瓦',
  113. 'Madagascar': '马达加斯加',
  114. 'Mexico': '墨西哥',
  115. 'Macedonia': '马其顿',
  116. 'Mali': '马里',
  117. 'Myanmar': '缅甸',
  118. 'Montenegro': '黑山',
  119. 'Mongolia': '蒙古',
  120. 'Mozambique': '莫桑比克',
  121. 'Mauritania': '毛里塔尼亚',
  122. 'Malawi': '马拉维',
  123. 'Malaysia': '马来西亚',
  124. 'Namibia': '纳米比亚',
  125. 'New Caledonia': '新喀里多尼亚',
  126. 'Niger': '尼日尔',
  127. 'Nigeria': '尼日利亚',
  128. 'Nicaragua': '尼加拉瓜',
  129. 'Netherlands': '荷兰',
  130. 'Norway': '挪威',
  131. 'Nepal': '尼泊尔',
  132. 'New Zealand': '新西兰',
  133. 'Oman': '阿曼',
  134. 'Pakistan': '巴基斯坦',
  135. 'Panama': '巴拿马',
  136. 'Peru': '秘鲁',
  137. 'Philippines': '菲律宾',
  138. 'Papua New Guinea': '巴布亚新几内亚',
  139. 'Poland': '波兰',
  140. 'Puerto Rico': '波多黎各',
  141. 'Dem. Rep. Korea': '朝鲜',
  142. 'Portugal': '葡萄牙',
  143. 'Paraguay': '巴拉圭',
  144. 'Qatar': '卡塔尔',
  145. 'Romania': '罗马尼亚',
  146. 'Russia': '俄罗斯',
  147. 'Rwanda': '卢旺达',
  148. 'W. Sahara': '西撒哈拉',
  149. 'Saudi Arabia': '沙特阿拉伯',
  150. 'Sudan': '苏丹',
  151. 'S. Sudan': '南苏丹',
  152. 'Senegal': '塞内加尔',
  153. 'Solomon Is.': '所罗门群岛',
  154. 'Sierra Leone': '塞拉利昂',
  155. 'El Salvador': '萨尔瓦多',
  156. 'Somaliland': '索马里兰',
  157. 'Somalia': '索马里',
  158. 'Serbia': '塞尔维亚',
  159. 'Suriname': '苏里南',
  160. 'Slovakia': '斯洛伐克',
  161. 'Slovenia': '斯洛文尼亚',
  162. 'Sweden': '瑞典',
  163. 'Swaziland': '斯威士兰',
  164. 'Syria': '叙利亚',
  165. 'Chad': '乍得',
  166. 'Togo': '多哥',
  167. 'Thailand': '泰国',
  168. 'Tajikistan': '塔吉克斯坦',
  169. 'Turkmenistan': '土库曼斯坦',
  170. 'East Timor': '东帝汶',
  171. 'Trinidad and Tobago': '特里尼达和多巴哥',
  172. 'Tunisia': '突尼斯',
  173. 'Turkey': '土耳其',
  174. 'Tanzania': '坦桑尼亚',
  175. 'Uganda': '乌干达',
  176. 'Ukraine': '乌克兰',
  177. 'Uruguay': '乌拉圭',
  178. 'United States': '美国',
  179. 'Uzbekistan': '乌兹别克斯坦',
  180. 'Venezuela': '委内瑞拉',
  181. 'Vietnam': '越南',
  182. 'Vanuatu': '瓦努阿图',
  183. 'West Bank': '西岸',
  184. 'Yemen': '也门',
  185. 'South Africa': '南非',
  186. 'Zambia': '赞比亚',
  187. 'Zimbabwe': '津巴布韦'
  188. }

图表

  1. map_ = Map(opts.InitOpts(width='1200px', height='600px')).add(series_name="世界各国病死率", # 设置提示框标签
  2. data_pair=a, # 输入数据
  3. maptype="world", # 设置地图类型为世界地图
  4. name_map=nameMap, # 添加映射
  5. is_map_symbol_show=False # 不显示标记点
  6. )

添加配置

  1. # 设置系列配置项
  2. map_.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 不显示国家名称
  3. # 设置全局配置项
  4. map_.set_global_opts(title_opts=opts.TitleOpts(title="国外疫情情况"), # 设置图标题
  5. visualmap_opts=opts.VisualMapOpts(max_=1000000, is_piecewise=True)) # 显示图例

保存

  1. map_.render("国外疫情情况.html")

最后运行代码,效果如下图

Python数据可视化实战:实时更新海外疫情数据,实现数据可视化的更多相关文章

  1. python面试题(实时更新)

    1.以下代码输出为: list1 = {':2} list2 = list1 list1['] = 5 sum = list1['] print(sum) 解析:10 b = a: 赋值引用,a 和 ...

  2. Dev GridControl数据修改后实时更新数据源

      1:  /// <summary> 2:  /// 嵌入的ComboxEdit控件选择值变化事件 3:  /// </summary> 4: /// <param n ...

  3. Dev GridControl数据修改后实时更新数据源(转)

    1:  /// <summary> 2:  /// 嵌入的ComboxEdit控件选择值变化事件 3:  /// </summary> 4: /// <param nam ...

  4. Python如何爬取实时变化的WebSocket数据【华为云技术分享】

    一.前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据.股市实时数据或币圈实时变化的数据.如下图: Web 领域中,用于实现数据'实时'更新的手段有轮询和 WebSo ...

  5. Python如何爬取实时变化的WebSocket数据

    一.前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据.股市实时数据或币圈实时变化的数据.如下图: Web 领域中,用于实现数据'实时'更新的手段有轮询和 WebSo ...

  6. 基于server broker 的数据实时更新

    Service Broker介绍:SQL Server Service Broker 为消息和队列应用程序提供 SQL Server 数据库引擎本机支持.这使开发人员可以轻松地创建使用数据库引擎组件在 ...

  7. MFC编辑框接收数据动态更新与刷新方法代码示例-如何让编辑框内容实时更新

    MFC编辑框接收数据动态更新与刷新方法代码示例-如何让编辑框内容实时更新 关键代码: //发送数据通知 //from txwtech@163.com LRESULT CCommSampleDlg::O ...

  8. MVC中使用Echart后台加载数据 实现饼图、折线图、全国地图数据,单击双击事件等

    @{ Layout = null; } @if (false) { <script src="~/Js/jquery-easyui-1.5/jquery.min.js"> ...

  9. 日志服务Python消费组实战(二):实时分发数据

    场景目标 使用日志服务的Web-tracking.logtail(文件极简).syslog等收集上来的日志经常存在各种各样的格式,我们需要针对特定的日志(例如topic)进行一定的分发到特定的logs ...

随机推荐

  1. [leetcode] 并查集(Ⅱ)

    最长连续序列 题目[128]:链接. 解题思路 节点本身的值作为节点的标号,两节点相邻,即允许合并(x, y)的条件为x == y+1 . 因为数组中可能会出现值为 -1 的节点,因此不能把 root ...

  2. PMP | 备考笔记

    (持续更新......) 五大过程组和十大知识领域是PMP的重要组成部分,也是这门课的重点线索,本文会逐步迭代.渐进明细的来补充完善这个体系. (先放个图吧) 以下每个模块记录自己有点模糊的地方 项目 ...

  3. 01 . Squid原理配置和使用

    Squid简介 Squid是一个支持HTTP,HTTPS,FTP等服务的Web缓存代理软件,它可以通过缓存页面来提高服务器的相应速度并降低带宽占用.并且,Squid还具有强大的访问控制功能.Squid ...

  4. 实验三 UML 建模工具的安装与使用

    UML 建模工具的安装与使用一. 实验目的1) 学习使用 EA(Enterprise Architect) 开发环境创建模型的一般方法: 2) 理解 EA 界面布局和元素操作的一般技巧: 3) 熟悉 ...

  5. 3. OpenCV-Python——图像梯度算法、边缘检测、图像金字塔与轮廓检测、直方图与傅里叶变换

    一.图像梯度算法 1.图像梯度-Sobel算子 dst = cv2.Sobel(src, ddepth, dx, dy, ksize) ddepth:图像的深度 dx和dy分别表示水平和竖直方向 ks ...

  6. Spring Cloud 系列之 Apollo 配置中心(三)

    本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Apollo 配置中心(一) Spring Cloud 系列之 Apollo 配置中心(二) 本篇文章讲解 Apol ...

  7. Java实现 蓝桥杯 算法提高 高精度减法(JDK方法)

    试题 算法提高 高精度减法 问题描述 高精度减法 输入格式 两行,表示两个非负整数a.b,且有a > b. 输出格式 一行,表示a与b的差 样例输入 1234567890987654321 99 ...

  8. Java实现 LeetCode 412 Fizz Buzz

    412. Fizz Buzz 写一个程序,输出从 1 到 n 数字的字符串表示. 如果 n 是3的倍数,输出"Fizz": 如果 n 是5的倍数,输出"Buzz" ...

  9. Java实现 LeetCode 89 格雷编码

    89. 格雷编码 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异. 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列.格雷编码序列必须以 0 开头. 示例 1: 输 ...

  10. StringBuilder的线程为什么不安全

    StringBuffer和StringBuilder的区别在哪里? StringBuffer是线程安全的,StringBuilder是线程不安全的. 那么StringBuilder不安全在哪里?在想这 ...