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社区版开发工具打…

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 很多时候都不是最优的操作,但它具有普适性,在效率、可维护性之…

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

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

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

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

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

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

一年期SSL证书怎么申请?

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

ReentrantLock源码阅读

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

【攻防世界】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年左右的跟传感…

亚马逊CloudFront使用体验

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

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

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

七大设计原则

在软件开发的领域中,随着技术的不断进步和市场需求的不断变化,软件系统的设计和维护变得越来越重要。为了确保软件系统能够长期有效地运行,并且能够在未来的发展中适应新的需求和技术变化,提高软件系统的可维护性和可复用性成为了…

map与set

set使用 set在我们就是我们前面学习的k模型,它可以用来比对数据,增删查的时间复杂度都是O(logn)效率非常高,由于它底层的原因,它也可以实现排序,通过中序遍历可以输出我们的有序的数据&#xff…

安装gensim报错

安装gensim pip install --upgrade gensim装完以后注意一个 装了一堆库其实,看下对应的scipy版本是1.13.0 然后运行 import gensim报错: cannot import name ‘triu’ from ‘scipy.linalg’ https://www.soinside.com/question/brZ46N5EH7bk9xdVwXa…

华为OD机试 - 内存冷热标记(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试…

Springboot+Vue项目-基于Java+MySQL的高校心理教育辅导系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

【Linux网络编程】TCP协议

TCP协议 1.TCP协议段格式4位首位长度序号和确认序号16位窗口大小6个标志位 2.确认应答机制3.超时重传机制4.连接管理机制如何理解连接如何理解三次握手如何理解四次挥手 5.流量控制6.滑动窗口7.拥塞控制8.延迟应答9.捎带应答10.面向字节流11.粘包问题12.TCP异常情况13.TCP小结1…

亚马逊全球跨境市场地位稳固,武汉星起航深化服务助力合作伙伴

在全球跨境电商市场的激烈竞争中,亚马逊凭借其强大的市场地位和卓越的平台特点,持续引领着行业的发展潮流。作为行业的领军者,亚马逊不仅占据了全球市场的一大部分,还以其深厚的品牌影响力、广泛的覆盖范围和高效的物流运作&#…