Python采集全球疫情数据并做可视化分析

嗨嗨,大家好~

今天真的是刚睡醒就知道RNG八人确诊,这年头出国打个比赛都这么不容易,希望早日康复~

唉,今天就教你们

如何用Python采集全球疫情数据,并做可视化分析

请添加图片描述

知识点:

  1. 爬虫基本流程
  2. requests 发送请求
  3. re 正则表达式
  4. json 结构化数据解析

开发环境:

  • python 3.8: 解释器

  • pycharm: 代码编辑器

  • requests 发送请求

  • pyecharts 绘制图表

  • pandas 读取数据

基本原理:

模拟成 浏览器/客户端 向 服务器 发送请求的过程

思路:

找到数据来源

  • 静态的数据: 你在右键点击查看网页源代码 能够找到的数据
  • 动态的数据: 你在右键点击查看网页源代码 找不到的数据

实现爬虫代码的流程:

  1. 发送请求 (通过 代码的方式访问上方的数据来源/访问网站)
  2. 获取数据
  3. 解析数据
  4. 保存数据

采集代码

import requests     # 发送请求
import csv          # 内置模块 不需要你安装的

mode=‘a’: 追加写入

encoding=‘utf-8’: 编码方式 / gbk

newline=‘’: 数据空行

f = open('疫情数据.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.writer(f)
csv_writer.writerow(['name', 'confirm', 'confirmAdd', 'dead', 'heal', 'nowConfirm'])

headers 伪装 公开数据

url = 'https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryConfirmAdd,WomWorld,WomAboard'
  1. 发送请求
response = requests.post(url)

<Response [200]>: 200, 请求成功了

  1. 获取数据

.text: 直接获取文本内容

.json(): 字典 键值对的方式把数据取出来

.content: 获取二进制内容, 视频 / 音频 / 图片

json_data = response.json()
  1. 解析数据

结构非常的标准

结构化的数据 json数据 直接通过字典键值对的方式取值 [‘data’] [‘WomAboard’]

非结构化数据 网页源代码 css/xpath/re

python学习交流Q群:770699889 ###
WomAboard = json_data['data']['WomAboard']
# 0, 224
for i in range(0, 225):name = WomAboard[i]['name']confirm = WomAboard[i]['confirm']confirmAdd = WomAboard[i]['confirmAdd']dead = WomAboard[i]['dead']heal = WomAboard[i]['heal']nowConfirm = WomAboard[i]['nowConfirm']print(name, confirm, confirmAdd, dead, heal, nowConfirm)
  1. 保存数据
    csv_writer.writerow([name, confirm, confirmAdd, dead, heal, nowConfirm])
f.close()

可视化代码

import pandas as pd     # 做表格操作的模块
from pyecharts.charts import Map  # 绘图的模块
from pyecharts import options as opts
python学习交流Q群:770699889 ###
name_map = {'Singapore Rep.': '新加坡','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': '津巴布韦','Comoros': '科摩罗'
}
pieces = [{"min": 1000000},{"min": 100000, "max": 999999},{"min": 10000, "max": 99999},{"min": 1000, "max": 9999},{"min": 100, "max": 999},{"min": 0, "max": 99},
]df = pd.read_csv('疫情数据.csv')
# 转成列表
name = df['name']
confirm = df['confirm']
dead = df['dead']
world_map = (Map().add('累计确诊', [list(i) for i in zip(name, confirm)], 'world', name_map=name_map, is_map_symbol_show=False).add('死亡人数', [list(i) for i in zip(name, dead)], 'world', name_map=name_map, is_map_symbol_show=False).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title='世界疫情情况'),visualmap_opts=opts.VisualMapOpts(max_=1000000, is_piecewise=True, pieces=pieces))
)
world_map.render('1.html')

在这里插入图片描述
文章看不懂,我专门录了对应的视频讲解,本文只是大致展示,完整代码和视频教程点击本行字即可

好啦,今天的分享到这里就结束了 ~

如果需要视频学习的可以在b站搜索 :Python小圆

对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18706.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大数据平台】基于Spark的美国新冠肺炎疫情数据分析及预测

一、选题背景 新型冠状病毒疫情是由严重急性呼吸系统综合征冠状病毒2&#xff08;SARS-CoV-2&#xff09;导致的2019冠状病毒病&#xff08;COVID-19&#xff09;所引发的全球大流行疫情。该疾病在2019年末于中华人民共和国湖北省武汉市首次爆发&#xff0c;随后在2020年初迅速…

chatgpt画思维导图

场景&#xff1a; chatgpt写思维导图代码&#xff0c;进而在专门的软件中生成思维导图 方法 在提问中&#xff0c;输入需要的思维导图代码格式

ChatGPT与网络安全的跨时代对话

前言 ChatGPT&#xff1a;是人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;真正像人类一样来聊天交流&#xff0c;甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务。G…

ChatGPT实现数据结构转换

数据结构转换 在应用系统开发和维护中&#xff0c;经常会有配置数据或客户数据需要在不同的序列化结构中相互转换的需求。不同编程语言之前&#xff0c;对数据结构的偏好也不一样&#xff0c;比如 JavaScript 一般使用 JSON、Java 一般使用 XML、Ruby 一般使用 YAML、Golang 一…

springboot3 笔记(雷峰阳)

文章目录 springboot3核心特性SpringBoot3-快速入门环境要求SpringBoot是什么快速体验1. 开发流程1. 创建项目2. 导入场景3.主程序4. 业务5. 测试6. 打包 2. 特性小结1. 简化整合2. 简化开发3. 简化配置5. 简化运维 3. Spring Initializr 创建向导3、应用分析1. 依赖管理机制2.…

我靠海外抖音搬运视频赚到了人生第一桶金:这个风口行业,真的很赚钱

在2022年新一轮疫情期间&#xff0c;“有啥方法&#xff0c;可在家快速赚钱&#xff1f;”冲上了热门话题。 “好想挣钱啊...…”单位难开工&#xff0c;生意不开张&#xff0c;咱们才惊醒&#xff1a;“领死工资的生活&#xff0c;真的好脆弱。” 平时总说副业赚钱&#xff0c…

腾讯股票接口、和讯网股票接口、新浪股票接口、雪球股票数据、网易股票数据...

2019独角兽企业重金招聘Python工程师标准>>> 腾讯股票接口&#xff1a; 分时图 http://data.gtimg.cn/flashdata/hushen/minute/sz000001.js?maxage110&0.28163905744440854 五天分时图 http://data.gtimg.cn/flashdata/hushen/4day/sz/sz000002.js?maxage432…

移动端APP——微信(1)手机桌面控件和启动画面显示与隐藏

微信原型设计1&#xff1a;手机桌面控件和启动画面显示与隐藏 微信原型设计运用的是产品原型设计软件Axure RP Pro 7.0 版。 一、手机桌面绘制 手机的外壳和桌面、以及微信图标都是直接引用的图片库中图片&#xff0c;将元件库中的image拖入&#xff0c;并单击右键导入图片即…

android 那个桌面好,Hola桌面 可能是最好用的安卓手机桌面

如果你是一名安卓手机用户&#xff0c;你可能会有这样的感觉&#xff0c;手机自带的系统桌面一般都比较鸡肋&#xff0c;不能自定义自己喜欢的样式&#xff0c;或者说是扩展性不尽人意。如果你不甘心这一切&#xff0c;你也许尝试过一些手机桌面产品&#xff0c;但能让你一直坚…

android 如何自定义桌面,安卓手机桌面设置教程 个性化你的桌面

Android系统是一款功能非常的强大的全球智能手机操作系统&#xff01;而相对于一些新手来说&#xff0c;熟练的操作安卓手机非常的难&#xff0c;那么下面我就安卓手机桌面设置来给新手用户一个简单的教程&#xff0c;让你的手机桌面变的更加的人性化&#xff01; 随着谷歌Adro…

android 手机桌面,安卓手机桌面介绍:教你认识安卓手机桌面

一个新手拿到手机&#xff0c;开机后看到的第一个画面就是桌面了&#xff0c;想要玩转整个手机&#xff0c;那么就先把桌面的各个功能都了解下吧。一般来说&#xff0c;刚买的新手机都是用的自带桌面&#xff0c;不同品牌的手机也是各不相同&#xff0c;但是功能方面都是大同小…

倡议书:关于暂停「巨型 AI」 实验的一封公开信

本文是 futureoflife 公开信&#xff0c;原文地址 https://futureoflife.org/open-letter/pause-giant-ai-experiments/ 目前已经有 1127 1127 1127 名 AI 学者参与签署。 以下为正文&#xff1a; 本文提出呼吁所有人工智能实验室立即暂停比 GPT-4 更强大的人工智能系统的训练…

ChatGPT vs 谷歌PaLM2,人类堕入“囚徒困境”?

前言 chatgpt的连续火爆&#xff0c;可以说是IT界近几十年来为数不多的超量话题&#xff0c;几乎各行各业都开始了chatgpt的研究。chatgpt受到的关注度可以说是无可估量的。各大巨头的纷纷加入也是它不断的推上热浪的关键。 最近看的一篇热文很有意思&#xff0c;全面分析透彻…

2023-05-31【02】ChatGPT 之父警告 AI 可能灭绝人类,350 名 AI 权威签署公开信

今天&#xff0c;AI 领域传出一封重要的公开信。 包括 「ChatGPT 之父」Sam Altman 在内 350 位 AI 权威都签署了这封联名公开信&#xff0c;并对当前正在开发的 AI 技术可能会对人类构成生存威胁担忧。 这封信只有一句声明&#xff1a;降低人工智能灭绝的风险&#xff0c;应该…

“ChatGPT之父”等350名业内人士签署公开信并警告:AI可能灭绝人类

人们对 AI 技术的发展和应用有了更加深入的思考与探讨。 日前&#xff0c;超过350名人工智能&#xff08;AI&#xff09;领域的行业高管、专家和教授签署了一封公开信&#xff0c;他们在信中警告称&#xff0c;AI可能给人类带来灭绝风险。 这份公开信发布在非营利组织人工智能…

万字详述! ChatGPT 之父承认 GPT-5 并不存在,为什么 OpenAI 总是这么实诚?

点击上方“AI遇见机器学习”&#xff0c;选择“星标”公众号 第一时间获取价值内容 来源: 爱范儿 微信号&#xff1a;ifanr 最近&#xff0c;OpenAI 的 CEO Sam Altman 在一场公开会议上为 GPT-5 辟谣。 他声称 OpenAI 并没有在训练 GPT-5&#xff0c;而是一直基于 GPT-4 做别…

ChatGPT 之父承认 GPT-5 并不存在,为什么 OpenAI 总是这么实诚?|万字详述

ChatGPT 诞生前传 来源: 爱范儿 微信号&#xff1a;ifanr 最近&#xff0c;OpenAI 的 CEO Sam Altman 在一场公开会议上为 GPT-5 辟谣。 他声称 OpenAI 并没有在训练 GPT-5&#xff0c;而是一直基于 GPT-4 做别的工作。 OpenAI 是一家非常有趣的机构&#xff0c;和微软、Go…

巴比特 | 元宇宙每日必读:AI竞赛失控,马斯克等人签署公开信,呼吁暂停训练比GPT-4更强的AI系统至少6个月,并开发安全协议...

摘要&#xff1a;据机器之心报道&#xff0c;在 GPT-4 诞生两周之际&#xff0c;一封公开信正在社交媒体发酵。这封公开信指出&#xff0c;最近几个月&#xff0c;人工智能实验室陷入了一场失控的竞赛&#xff0c;他们没有办法理解、预测或可靠地控制自己创造的大模型。人类社会…

人类精英呼吁暂停AI实验 ChatGPT:合理但谨慎考虑

3月29日&#xff0c;非营利组织“未来生命研究所&#xff08;Future of Life Institute&#xff09;”发表了一封题为“暂停巨型AI实验”的公开信&#xff0c;呼吁全球的AI实验室暂停训练比GPT-4更强大的系统至少6个月&#xff0c;并在此期间开发出一份针对AI的共享安全协议&am…