Python基础(七)——PyEcharts数据分析(面向对象版)
四、使用PyEcharts数据分析案例(面向对象版)
【前言:为了巩固之前的Python基础知识(一)到(五),并为后续使用Python作为数据处理的好帮手,我们一起来用面向对象的思想来理解代码】
1.文件读取与数据处理(面向对象版)
# main.py
"""
文本数据格式如下:
订单编号,下单日期,下单金额,下单账户
json数据格式如下:
{id:编号,data:日期,money:金额,account:账户}
"""
import json
# 设计一个类完成数据封装
class data_record:def __init__(self, id, data, money, account):self.id = id # 订单编号self.data = data # 下单日期self.money = money # 下单金额self.account = account # 下单账户"""当类对象需要被转换为字符串之前,会输出内存地址需要使用魔术方法__str__控制类转换为字符串的行为详情请看到最后"""def __str__(self):return f"{self.id}, {self.data}, {self.money}, {self.account}"# 设计一个抽象类定义文件读取相关功能
class file_reader:# 读取文件数据,将读到的每条数据转换成list,返回data_record类def read_data(self) -> list[data_record]:pass# 读取文本数据子类
class txt_file_reader(file_reader):# 使用构造方法定义文件路径def __init__(self, path):self.path = path# 复写抽象方法def read_data(self) -> list[data_record]:f = open(self.path, 'r', encoding="UTF-8")data_record_list: list[data_record] = []for line in f.readlines():# 注意此处去除读取到的line中的换行符line = line.strip()# 注意split方法得到一个列表,要将字符串表示的money转换成intdata_list = line.split(",")data = data_record(data_list[0], data_list[1], int(data_list[2]), data_list[3])data_record_list.append(data)f.close()return data_record_list# 读取json类型数据子类
class json_file_reader(file_reader):# 使用构造方法定义文件路径def __init__(self, path):self.path = path# 复写抽象方法def read_data(self) -> list[data_record]:f = open(self.path, 'r', encoding="UTF-8")data_record_list: list[data_record] = []for line in f.readlines():# 将读取到的每一行json类型转换成python数据类型——字典类型data_dict = json.loads(line)data = data_record(data_dict["id"],data_dict["data"],int(data_dict["money"]),data_dict["account"])data_record_list.append(data)f.close()return data_record_listtxt_file = txt_file_reader("D:/txt_file.txt")
json_file = json_file_reader("D:/json_file.txt")
txt_list: list[data_record] = txt_file.read_data()
json_list: list[data_record] = json_file.read_data()"""
运行:
for line in txt_list:print(line)for line in json_list:print(line)
当类对象需要被转换为字符串之前,会输出内存地址
故此时仅打印数据的地址
需要使用魔术方法__str__控制类转换为字符串的行为
"""# 将两个列表数据内容合并
all_list: list[data_record] = txt_list + json_list
# 将同一天的销售金额累加,使用字典存储
data_dict = {}
for record in all_list:# 当前日期已经存在,直接累加money即可if record.data in data_dict.keys():data_dict[record.data] += record.money# 当前日期不存在,需要添加该日期且将money存入else:data_dict[record.data] = record.moneyprint(data_dict)"""
输出结果:
{'07-01': 5081, '07-02': 5360, '07-03': 2096, '07-04': 5174, '07-05': 5344, '07-06': 3162, '07-07': 2141, '07-08': 1701, '07-09': 3180}"""
2.可视化开发
# 在main.py中导入包
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType# 在1.文件读取与数据处理(面向对象版)代码基础上添加:# 得到柱状图类对象
bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))
# 将字典中所有日期作为x轴参数,所有金额作为y轴参数
bar.add_xaxis(list(data_dict.keys()))
bar.add_yaxis("总金额", list(data_dict.values()), label_opts=LabelOpts(is_show=False))bar.set_global_opts(title_opts=TitleOpts(title="每日销售总金额")
)bar.render("每日销售总金额柱状图.html")
最终效果:
【记录学习过程的笔记,欢迎大家一起讨论,会持续更新】
相关文章:

Python基础(七)——PyEcharts数据分析(面向对象版)
四、使用PyEcharts数据分析案例(面向对象版) 【前言:为了巩固之前的Python基础知识(一)到(五),并为后续使用Python作为数据处理的好帮手,我们一起来用面向对象的思想来理…...
滚雪球学SpringCloud[5.1讲]: Spring Cloud Config详解
全文目录: 前言1. Spring Cloud Config的基本概念1.1 微服务配置管理的挑战1.2 Spring Cloud Config的架构 2. 配置服务端与客户端的配置2.1 配置服务端的搭建2.2 配置客户端的搭建2.3 环境隔离配置 3. 配置中心与Git的集成3.1 Git仓库的目录结构设计3.2 配置的版本…...
Unity常用随机数算法
Unity的Random.Range介绍 有两个重载: 如果参数存在至少一个浮点数那么将会触发public static float Range(float minInclusive, float maxInclusive); 返回一个范围内的浮点数(包含首尾) 如果参数都是整形则触发public static int Range(int minInclusive, int maxExclusiv…...
dial unix /var/run/docker.sock: connect: permission denied
要解决 permission denied 错误并授予当前用户 sunyuhua 访问 Docker 的权限,您可以按照以下步骤操作: 1. 检查 Docker 服务是否在运行 首先,确保 Docker 服务已经启动: sudo systemctl start docker sudo systemctl enable do…...
Prompt提示词技巧
文章目录 🍊 探索AI内容创作核心:提示词Prompt1 什么是提示词工程?1.1 提示词的原理1.2 提示词工程师的前景1.3 提示词工程师的门槛是否较低?1.4 提示词的未来展望 2 提示词编写的基本技巧3 常见的提示词框架3.1 CO-STAR框架3.2 BORKE框架3.…...

滑动窗口(6)_找到字符串中所有字母异位词
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 滑动窗口(6)_找到字符串中所有字母异位词 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论Ǵ…...

【无标题】rocket
rocketMQ集群双主双从同步模式(2m-2s-sync)搭建-CSDN博客 集群架构概念 在部署的时候首先要将nameserver启动起来,之后就是将broker启动起来,broker启动起来会将自己的信息注册到nameserver上面。之后再去创建topic,因为发消息的逻辑和收消…...
Maven国内镜像(四种)
配置Maven使用国内镜像是一个常见的做法,因为这样可以显著提高依赖下载的速度并避免网络不稳定带来的问题 在 settings.xml 文件中,需要添加或修改 <mirrors> 标签来指定国内镜像。 以下是几个可用的镜像 1. 阿里云 <mirrors> <mi…...
Linux环境中如何快速修改 JAR 包中的配置文件
在日常的 Java 开发中,我们时常会遇到需要修改 JAR 包中某个配置文件的情况。比如,某些场景下你可能需要调整 application-dev.yml 文件中的配置信息。但解压整个 JAR 包再重新打包会显得比较繁琐。本文将介绍一种快捷的方法,帮助你快速查找并…...

java高频面试题(2024最新)
HashMap使用哪些方法来解决哈希冲突? 使用链地址法(使用散列表)来链接拥有相同hash值的数据;使用2次扰动函数(hash函数)来降低哈希冲突的概率,使得数据分布更平均;引入红黑树进一步…...
WEB 编程:使用富文本编辑器 Quill 配合 WebBroker 后端
使用 Delphi 的 WebBroker 框架写 Web Server,需要一个前端的富文本编辑器。 评估了好几个,最后选择 Quill 这个开源的。 官方地址:Quill - Your powerful rich text editor 把前端代码,存储为一个单独的文本文件,方…...

新书出版,大陆首本NestJS图书《NestJS全栈开发解析:快速上手与实践》
新书全栈实战项目:数字门店管理平台开源啦🎉🎉🎉 GitHub地址(持续更新NestJS企业级实践):欢迎star⭐️⭐️⭐️ 前端ReactTypeScriptVite 后端NestMySQLRedisDocker 前言 对,你没看…...
面试题:react、vue中的key有什么作用?(key的内部原理)
1.虚拟DOM中key的作用: key是虚拟DOM对象的标识,当数据发生变化时,vue会根据【新数据】生成【新的虚拟DOM】随后Vue进行【新虚拟DOM】与【旧虚拟DOM】的差异比较,比较规则如下: 2.对比规则: (1).旧虚拟DOM中找到了与新虚拟DOM相同的key: …...

基于python+django+vue的外卖管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的外…...

初始分布式系统和Redis特点(
(一)认识redis Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperlog…...

计算机毕业设计 家电销售展示平台的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

Android RecyclerView 缓存机制深度解析与面试题
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 引言 RecyclerView 是 Android 开发中用于展示列表和网格的强大组件。它通过高效的缓存机制,优化了滑动性能和内存使用。本文将深入…...

管道缺陷检测系统源码分享
管道缺陷检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…...

python定时发送邮件的功能如何实现自动化?
Python定时发送邮件教程?如何用Python发送电子邮件? Python定时发送邮件不仅能够帮助我们自动处理日常的邮件发送任务,还能在特定时间点触发邮件发送,确保信息的及时传达。AokSend将详细探讨如何利用Python实现定时发送邮件的自动…...

工业机器人9公里远距离图传模块,无人机低延迟高清视界,跨过距离限制
在科技日新月异的今天,无线通信技术正以未有的速度发展,其中,图传模块作为连接现实与数字世界的桥梁,正逐步展现出其巨大的潜力和应用价值。今天,我们将聚焦一款引人注目的产品——飞睿智能9公里远距离图传模块&#x…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...