数据爬虫(JSON格式)数据地图可视化(pyecharts)【步骤清晰,一看就懂】

一、前言

数据存储在网页上,需要爬取数据下来,数据存储格式是JSON,数据可视化在工作中也变得日益重要,接下来将数据爬虫与数据可视化结合起来,做个案例

注:当时数据是22年1月29日爬取数据

二、使用步骤

# 1.导入包
import pandas as pd 
import requests
import json# 2.数据爬取
china_url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
}
response = requests.get(url=china_url,headers = headers).json()
data = json.loads(response['data'])with open('1-29.json','w',encoding='utf-8') as f: f.write(json.dumps(data))# 3.存储到dataframe中
# 获取中国所有的数据
chinaAreaDict=data['areaTree'][0]
# 获取 所有省份的数据 
provinceList = chinaAreaDict['children']'''
[{河南,安阳}{河南,许昌}], 为了方便存储到dataframe中
'''
china_cityList = []
# 遍历每一个省份数据
for x in range(len(provinceList)):# 省份的名称province = provinceList[x]['name']# 获取每一个省下的所有的城市province_list = provinceList[x]['children']# 遍历这个省份的所有城市【一个一个的拿出来】for y in range(len(province_list)):# 获取城市的名字city = province_list[y]['name']# 获取当前城市的总数据total = province_list[y]['total']# 获取当前城市的今日数据today = province_list[y]['today']# 保存成一个字典 {'province':province, 'city':city, 'total':total}china_dict = {'province':province, 'city':city, 'total':total, 'today':today}# 添加到列表中china_cityList.append(china_dict)# 将放有每一个城市的列表构建成dataframe
chinaTotalData = pd.DataFrame(china_cityList)
chinaTotalData# 4.将total列数据字典转化成多列
total_dataframe = pd.DataFrame()def func(ser):global total_dataframetotal_dataframe = total_dataframe.append(pd.Series(ser['total']).to_frame().T,ignore_index = True)chinaTotalData.apply(func,axis=1)# 修改列的名字
def rename_func(x):return "total_" + x   # total_nowConfirmtotal_dataframe.rename(columns = rename_func, inplace = True)chinaTotalData = pd.merge(chinaTotalData,total_dataframe,left_index=True,right_index=True,how='outer')
# 删除total列
chinaTotalData.drop(['total'],axis=1, inplace = True)
chinaTotalData# 5.将today列数据字典转化成多列
total_dataframe = pd.DataFrame()def func(ser):global total_dataframetotal_dataframe = total_dataframe.append(pd.Series(ser['today']).to_frame().T,ignore_index = True)chinaTotalData.apply(func,axis=1)# 修改列的名字
def rename_func(x):return "today_" + x   # total_nowConfirmtotal_dataframe.rename(columns = rename_func, inplace = True)chinaTotalData = pd.merge(chinaTotalData,total_dataframe,left_index=True,right_index=True,how='outer')
# 删除total列
chinaTotalData.drop(['today'],axis=1, inplace = True)
chinaTotalData# 6.保存到Excel
chinaTotalData.to_excel('1-29疫情数据.xlsx',sheet_name='数据',index=False)# 7.根据数据绘制国内确诊人数总疫情图
from pyecharts.charts import Map  # 导入地图对象
import pyecharts# 整理数据格式,满足地图的数据要求
data = chinaTotalData.groupby(by='province',as_index = False).sum()data_list = list(zip(data['province'].values.tolist(),data['total_confirm'].values.tolist()))# 创建地图对象
map_china = Map()map_china.add(series_name='确诊病例数',data_pair=data_list)map_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-499","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", "color":"#660000"}]))
map_china.render_notebook()

数据展示

1.原始数据(Json)与结果集(Excel)所示:
在这里插入图片描述

2.数据地图可视化所示(当时的记录):
(1)、
请添加图片描述

(2)、
请添加图片描述

(3)、
请添加图片描述

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

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

相关文章

直播前期准备

直播前的准备是一个综合性的过程,需要从多个方面进行考虑和准备。以下是一些直播前准备的参考∶ 1.确定直播主题和目标∶明确直播的主题和目标,以及如何吸引观众。考虑观众的兴趣和需求,选择一个熟悉且具有吸引力的主题,以提升直…

js事件流与事件委托/事件代理

1 事件流 事件流分为两步,一是捕获,二是冒泡 1.1 捕获概念 捕获就是从最高层一层一层往下找到最内部的节点 1.2 冒泡概念 捕获到最小节点后,一层一层往上返回,像是气泡从最底部往上冒一样,由于水深不同压强不同&…

C题目12:请写一个函数,判断一个数是否为质数,并在main函数中调用

一.每日小语 人的一切痛苦,本质上都是对自己的无能的愤怒。——王小波 自己思考 判断一个函数是否为质数,这个我在之前练过,我想至少两次,而这一次则是问我如何在main函数中调用,这个概念我不理解,所以我…

HarmonyOS4.0 ArkUI组件

目录 简介 搭建开发环境 ArkUI基础组件 Image组件 Text组件 TextInput Button Slider 简介 HarmonyOS 4.0的ArkUI组件是一套UI开发框架,提供开发者进行应用UI开发时所必须的能力。在ArkUI中,组件是界面搭建与显示的最小单位,开发者通过…

linux拨号服务器如何创建爬虫ip池

作为一个爬虫技术员,除了要熟练掌握至少一种编程语言外,还应该创建属于自己的爬虫ip池。我们都知道,在进行爬虫采集时,经常会遇到网站各种发爬机制,如果有自己的ip池,将会让爬虫这项枯燥无味的工作变得非常…

OLED双面显示广告机的应用场景

OLED双面显示广告机是一种创新的广告设备,它具有双面显示屏幕,可以同时向两个方向展示广告或信息。这种设备被广泛应用于各种场景,例如: 商业展示:在大型商业场所,如购物中心、百货商场等,OLED双…

Git常用命令#切换分支

要在 Git 中切换分支,你可以使用 git checkout 命令。 a.创建新分支并切换到该分支 如果你想要创建一个新分支并立即切换到该分支,可以使用以下命令: git checkout -b 新分支名这会创建一个名为 新分支名 的新分支,并将你的工作目…

运维知识点-Nginx

Nginx Nginx解析安全实战预备知识实验目的#制作图片木马# web服务器-Nginx服务命令及配置centOS7安装安装所需插件安装gccpcre、pcre-devel安装zlib安装安装openssl Nginx解析安全实战 预备知识 NginxPHP/FastCGI构建的WEB服务器工作原理 Nginx|FastCGI简介 Nginx (“engin…

云轴科技ZStack信创云平台助力国泰君安期货实现信创改造

信创是数字中国建设的重要组成部分,也是数字经济发展的关键推动力量。作为云基础软件企业,云轴科技ZStack 产品矩阵全面覆盖数据中心云基础设施,ZStack信创云首批通过可信云《一云多芯IaaS平台能力要求》先进级,是其中唯一兼容四种…

数据爬取+数据可视化实战_哪里只得我共你(Dear Jane)_词云展示----网易云

一、前言 歌词上做文本分析,数据存储在网页上,需要爬取数据下来,词云展示在工作中也变得日益重要,接下来将数据爬虫与可视化结合起来,做个词云展示案例。 二、操作步骤 代码如下: # -*- coding:utf-8 -*-…

【ArcGIS Pro二次开发】(78):批量合并GDB数据库

有些GDB数据库会按分幅或行政区划进行分开储存,尤其是一些地形测绘或国情地理数据。 如下图所示: 数据是完整的,但使用的时候要一个一个拖进地图中,进行分析的时候也需要将其合并后使用。 因此就做了这个合库工具。 一、要实现的…

红队专题-fuzz技巧

红队专题 0x00 知己知彼常见 waf 收集SecureSphere (Imperva)西数WTS-WAF安全狗D盾腾讯云 waf阿里云云盾Web应用防火墙云锁UPUPW安全防护宝塔网站防火墙网防G01护卫神智创防火墙腾讯云玄武盾ISG 0x01 waf 绕过(过狗)姿势 举例SQL注入篇1.内联注释绕过2.等价替换法:3…

单片机AVR单片机病房控制系统设计+源程序

一、系统方案 设计一个可容8张床位的病房呼叫系统。要求每个床位都有一个按钮,当患者需要呼叫护士时,按下按钮,此时护士值班室内的呼叫系统板上显示该患者的床位号,并蜂鸣器报警。当护士按下“响应”键时,结束当前呼叫…

程序/进程替换(讲解)

本文旨在讲解进程替换的知识!希望读完本文,能使读者对进程替换有更深一步的认识!!好的,废话不多说,干货来了! 进程替换的引进! 为什么要引进进程替换呢?我们创建子进程总…

Achronix推出基于FPGA的加速自动语音识别解决方案

提供超低延迟和极低错误率(WER)的实时流式语音转文本解决方案,可同时运行超过1000个并发语音流 2023年11月——高性能FPGA芯片和嵌入式FPGA(eFPGA IP)领域的领先企业Achronix半导体公司日前自豪地宣布:正式…

ethtool工具添加并验证网口

Filesystem Packages->console->network->ethtool 命令描述: ethtool 是用于查询及设置网卡参数的命令。 使用命令: ethtool ethx //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0、eth1等等 ethtool –…

【NodeJS】 API Key 实现 短信验证码功能

这里使用的平台是 短信宝整体来讲还是挺麻烦的平台必须企业才行,个人是无法使用该平台的 平台必须完成 身份信息认证 和 企业认证 这里就需要 “营业执照”了 ,没有 “营业执照” 的朋友还是后退一步吧 后端我用的是NodeJS ,使用第三方库 ro…

统信UOS和vue.js的一个兼容问题

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 这事到现在说起还很奇怪,在UOS20(硬件为华为鲲鹏服务器,arm架构,g8.3)上部署uve.js&#xff0…

linux NAT网卡配置static

由于是内网,资料无法拷贝,借助参考资料,整理发出。 镜像安装 基本操作。 查看VM配置 图1,有几个信息。一个是NAT借用了网卡里的VMnet8适配器。 子网IP是从192.168.142.0 子网掩码255.255.255.255,对应下面配置的N…

Java 的第二十章:多线程

创建线程 继承Thread 类 Thread 类时 java.lang 包中的一个类,从类中实例化的对象代表线程,程序员启动一个新线程需要建立 Thread 实例。 Thread 对象需要一个任务来执行,任务是指线程在启动时执行的工作,start() 方法启动线程&am…