2024.4.19 Python爬虫复习day07 可视化3

综合案例

需求:

已知2020年疫情数据,都是json数据,需要从文件中读出,进行处理和分析,最终实现数据可视化折线图
在这里插入图片描述

相关知识点:

json

json简介: 本质是一个特定格式的字符串      举例:  '[{},{},{}]' 或者 '{}'python中json包: import jsonpython数据转为json数据:  变量接收json数据 = json.dumps(python字典或者列表)json数据转为python数据:  变量接收python字典或者列表 = json.loads(json数据)

pyecharts

pyecharts简介: python版本的echarts可视化工具使用pyecharts包: 先安装pyecharts,再导包:  import pyecharts可以制作不同种类的图表,示例如下:制作饼图: from pyecharts.charts import Pie制作地图: from pyecharts.charts import Map制作折线图: from pyecharts.charts import Line制作柱状图: from pyecharts.charts import Bar制作图表步骤,如下:1.导包2.创建对象3.添加数据4.设置全局选项5.渲染成页面

代码:

前提是: 把资料中的疫情数据目录复制到项目中

自定义模块:

此模块目的是为了重复去读取各个国家疫情数据

read_json_file.py模块代码如下:

# 导包
import json# 定义一个函数用于处理和分析各个国家的疫情数据
def get_data_2020(file_path, rep_str):"""此函数用于处理和分析各个国家的疫情数据:param file_path: json文件路径:param rep_str: 要替换的json数据开头子串:return: 返回的是元组(日期数据,确诊数据)"""# 一.数据处理: 抽取  转换  加载# 1.抽取: 读取文件中json数据with open(file_path, 'r', encoding='utf8') as f:json_data = f.read()# 打印数据,测试是否成功读取,注意: 测试完可以注释或者删除# print(json_data)# 2.转换: 把json数据中无效的数据清洗过滤掉# 去除开头的'jsonp_1629344292311_69436('json_data = json_data.replace(rep_str, '')# 去除结尾的');'json_data = json_data[:-2]# 3.加载: 把json数据转为python容器dict_data = json.loads(json_data)# 打印数据,测试是否成功读取,注意: 测试完可以注释或者删除# print(dict_data)# print(type(dict_data))# 二.数据分析: 海量数据提取对自己有价值的部分数据# 再次明确目的: 做2020年各个国家确诊人数折线图# 分析哪些是有价值的数据? 2020年的 updateDate对应日期数据  以及  '确诊'的data数据# 1.先分别获取国家所有的日期数据以及确诊数据update = dict_data['data'][0]['trend']['updateDate']data = dict_data['data'][0]['trend']['list'][0]['data']# 2.获取2020年的日期数据: 核心就是获取到2020年的截止索引time_2020 = update[:update.index('12.31') + 1]# print(2020update)# 3.获取2020年确诊数据: 核心就是获取到2020年的截止索引data_2020 = data[:update.index('12.31') + 1]# print(uas_2020data)# 返回最终结果 默认放到元组容器中(a,b)return time_2020, data_2020

测试模块:

# 下述导自定义模块模块报错,因为模块名称不能以数字开头
# import 02_自定义读取文件模块.py# 改名后再导自定义模块正常,因为模块名符合标识符规则
import read_json_file# 测试自定义模块是否能够使用
# 1.获取美国的2020年疫情数据
r1 = read_json_file.get_data_2020('疫情数据/美国.txt', 'jsonp_1629344292311_69436(')
print(r1)
# 2.获取日本的2020年疫情数据
r2 = read_json_file.get_data_2020('疫情数据/日本.txt', 'jsonp_1629350871167_29498(')
print(r2)
# 3.获取美国的2020年疫情数据
r3 = read_json_file.get_data_2020('疫情数据/印度.txt', 'jsonp_1629350745930_63180(')
print(r3)

数据可视化:

# 1.导包
from pyecharts.charts import Line
from read_json_file import get_data_2020
import pyecharts.options as opts# 2.创建对象
line = Line(init_opts=opts.InitOpts(width='1500px', height='800px'))
# 3.添加数据(x和y轴)
# 先读取数据
us_all_data20 = get_data_2020('疫情数据/美国.txt', 'jsonp_1629344292311_69436(')
jp_all_data20 = get_data_2020('疫情数据/日本.txt', 'jsonp_1629350871167_29498(')
in_all_data20 = get_data_2020('疫情数据/印度.txt', 'jsonp_1629350745930_63180(')
# 再添加数据
line.add_xaxis(jp_all_data20[0])
# 由于三个数据个数不一致,会导致数据错位
# us数据列表头添加1个0元素
us_all_data20[1].insert(0, 0)
# in数据前面添加46个0元素
# 采用列表推导式快速生成多个0列表,然后和原有列表拼接成新的一个列表
zero_list = [i * 0 for i in range(46)]
in_all_data20 = zero_list + in_all_data20[1]# 添加数据
line.add_yaxis('us数据', us_all_data20[1], symbol_size=10,linestyle_opts=opts.LineStyleOpts(width=5))
line.add_yaxis('jp数据', jp_all_data20[1], symbol_size=10)
line.add_yaxis('in数据', in_all_data20, symbol_size=10, label_opts=opts.LabelOpts(is_show=False))# 4.设置全局选项
line.set_global_opts(title_opts=opts.TitleOpts(title='2020印美日累计确诊人数折线图',pos_left='center',pos_bottom='1%'),yaxis_opts=opts.AxisOpts(name='确诊人数'),xaxis_opts=opts.AxisOpts(name='时间'),legend_opts=opts.LegendOpts(pos_top='1%')
)
# 5.渲染成页面
line.render('2020印美日累计确诊人数折线图.html')

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

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

相关文章

微服务架构使用和docker部署方法(若依)

这里以若依官方网站开源的微服务框架为例子记录使用方法过程。 开源地址:RuoYi-Cloud: 🎉 基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统,同时提供了 Vue3 的版本 下载后,用IDEA社区版开发工具打…

【量化交易】顶底分型策略

在众多的量化策略中,顶底分型策略因其独特的市场趋势捕捉能力和简洁的实现方式而受到许多投资者的青睐。本文将详细介绍顶底分型策略的原理,并展示如何使用Python在聚宽平台上实现这一策略。 感兴趣的朋友,可以在下方公号内回复:0…

GNU Radio Radar Toolbox编译及安装

文章目录 前言一、GNU Radio Radar Toolbox 介绍二、gr-radar 安装三、具体使用四、OFDM 雷达仿真 前言 GNU Radio Radar Toolbox(gr-radar)是一个开放源码的工具箱,用于 GNU Radio 生态系统,主要目的是为雷达信号处理提供必要的…

vue源码解析——diff算法/双端比对/patchFlag/最长递增子序列

虚拟dom——virtual dom,提供一种简单js对象去代替复杂的 dom 对象,从而优化 dom 操作。virtual dom 是“解决过多的操作 dom 影响性能”的一种解决方案。virtual dom 很多时候都不是最优的操作,但它具有普适性,在效率、可维护性之…

Leetcode 3111. Minimum Rectangles to Cover Points

Leetcode 3111. Minimum Rectangles to Cover Points 1. 解题思路2. 代码实现 题目链接:3111. Minimum Rectangles to Cover Points 1. 解题思路 这一题在这次比赛的4道题当中算是比较简单的,基本就只需要将所有的点排序之后然后使用贪婪算法来cover住…

【C++造神计划】运算符

1 赋值运算符 赋值运算符的功能是将一个值赋给一个变量 int a 5; // 将整数 5 赋给变量 a 运算符左边的部分叫作 lvalue(left value),右边的部分叫作 rvalue(right value) 左边 lvalue 必须是一个变量 右边 rval…

木马免杀代码之python反序列化分离免杀

本篇文章主要用到python来对CobaltStrike生成的Shellcode进行分离免杀处理, 因此要求读者要有一定的python基础, 下面我会介绍pyhon反序列化免杀所需用到的相关函数和库 exec函数 exec函数是python的内置函数, 其功能与eval()函数相同, 但不同的是exec函数支持多行python代码…

我国新戊二醇产能逐渐增长 市场集中度有望进一步提升

我国新戊二醇产能逐渐增长 市场集中度有望进一步提升 新戊二醇(NPG)又称为2,2-二甲基-1,3-丙二醇,化学式为C5H12O2,熔点为124-130℃。新戊二醇多表现为一种无特殊气味的白色结晶固体,易溶于水及醇、醚等溶液。新戊二醇…

为什么看到这么多人不推荐C++?

前几天逛知乎的时候,看到一个问题: 看到这个问题我倒是想吐槽几句了。 C一直没找到自己的定位! C语言:我是搞系统编程开发的,操作系统、数据库、编译器、网络协议栈全是我写的。 PHP:我是搞后端业务开发…

docker compose安装及安装慢解决办法

docker compose安装 Compose下载添加执行权限创建软链测试安装结果 Compose下载 curl -SL "https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose上述compose是在docker官方git…

一年期SSL证书怎么申请?

申请SSL证书三步走 JoySSL_JoySSL SSL证书_JoySSL https证书-JoySSL 一、选证书类型 根据网站性质与安全需求,选定合适的SSL证书: - 域名验证证书(DV):快速验证域名所有权,适用于个人网站、博客&#xff…

ReentrantLock源码阅读

1. 概述 lock锁, 基于队列同步器AQS, 实现公平锁、非公平锁 队列同步器AQS可以阅读我这篇文章: 点击传送 实现了Lock接口: public class ReentrantLock implements Lock// 加锁 获取不到锁一直等待 void lock(); // 加锁 获取不到锁一直等待 等待过程可以被中断…

websocket原理及简单入门

在了解websocket之前,我们先来了解一下websocket出现之前的世界 当我们在开腾讯会议或视频通话时,我们自己的影像会传给对方,对方的影像也能同时传给我们,这就是即时通讯技术 即时通讯技术是实现:服务器端可以时地将数据的更新或变化反应到客户端,在Web中…

Python中操作Excel表对象并打包为脚本

一、准备工作 pip install pandas pip install openpyxl pip install pyinstaller 数据表格: 数据表下载 二、执行写入操作 import pandas as pd # pyinstaller --onefile attendance_records_score.py # 打包 # 读取源Excel文件(假设源表有列A…

【攻防世界】php_rce (ThinkPHP5)

进入题目环境,查看页面信息: 页面提示 ThinkPHP V5,猜测存在ThinkPHP5 版本框架的漏洞,于是查找 ThinkPHP5 的攻击POC。 构造 payload: http://61.147.171.105:50126/?sindex/think\app/invokefunction&functioncall_user_f…

【Go语言快速上手(一)】 初识Go语言

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Go语言专栏⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多Go语言知识   🔝🔝 Go快速上手 1. 前言2. Go语言简介(为…

模拟Android系统Zygote启动流程

版权声明:本文为梦想全栈程序猿原创文章,转载请附上原文出处链接和本声明 前言: 转眼时间过去了10年了,回顾整个10年的工作历程,做了3年的手机,4年左右的Android指纹相关的工作,3年左右的跟传感…

什么是三次握手和四次握手

三次握手和四次挥手是TCP协议中用于建立和终止TCP连接的重要机制。 三次握手是TCP连接建立的过程,具体步骤如下: 客户端发送一个带有SYN标志的数据包给服务端,表示希望建立连接。服务端收到后,回传一个带有SYN/ACK标志的数据包&…

亚马逊CloudFront使用体验

前言 首先在体验CloudFront之前,先介绍一下什么是CDN,以及CDN的基本原理。 CDN是Content Delivery Network(内容分发网络)的缩写,是一种利用分布式节点技术,在全球部署服务器,即时地将网站、应…

《由浅入深学习SAP财务》:第2章 总账模块 - 2.6 定期处理 - 2.6.6 年初操作:科目余额结转

2.6.6 年初操作:科目余额结转 在使用事务代码 FAGLB03 查询科目余额时,可以看到按期间的发生额清单。其中,第一行称为“余额结转”,该行的累计余额代表上年度遗留下来的余额,也就是年初余额。对于资产负债表科目而言&a…