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")

最终效果:

每日销售总金额

记录学习过程的笔记,欢迎大家一起讨论,会持续更新

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

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

相关文章

基于ESP32S3的链接大语言模型对话模块

本实物模块从实物外观、模块组成、API申请及功能说明四部分来介绍这款基于ESP32S3的大语言模型对话模块。 1、实物外观 2、模块介绍 本硬件平台主要由三个模块组成,包括MAX9814录音模块、MAX98357音频功放模块和ESP32S3模块。如下图所示。 MAX9814录音模块&#…

C#程序员的堕落从nuget开始:将自己的代码发布到nuget

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

【Android 13源码分析】WindowContainer窗口层级-2-构建流程

在安卓源码的设计中,将将屏幕分为了37层,不同的窗口将在不同的层级中显示。 对这一块的概念以及相关源码做了详细分析,整理出以下几篇。 【Android 13源码分析】WindowContainer窗口层级-1-初识窗口层级树 【Android 13源码分析】WindowCon…

房产销售系统:SpringBoot技术应用案例

第二章关键技术的研究 2.1相关技术 房产销售系统是在Java MySQL开发环境的基础上开发的。Java是一种服务器端脚本语言,易于学习,实用且面向用户。全球超过35%的Java驱动的互联网站点使用Java。MySQL是一个数据库管理系统,因为它的…

代理导致的git错误

问题: 今天在clone时出现如下错误: fatal: unable to access https://github.com/NirDiamant/RAG_Techniques.git/: Failed to connect to 127.0.0.1 port 10089 after 2065 ms: Couldnt connect to server真是让人感到奇怪!就在前天&#…

伪工厂模式制造敌人

实现效果 1.敌人方实现 敌人代码 using UnityEngine; using UnityEngine.UI;public class EnemyBasics : MonoBehaviour {public int EnemySpeed { get; internal set; }public int EnemyAttackDistance { get; internal set; }public int EnemyChaseDistance { get; interna…

初识 C++ ( 1 )

引言:大家都说c是c的升级语言。我不懂这句话的含义后来看过解释才懂。 一、面向过程语言和面向对象语言 我们都知道C语言是面向过程语言,而C是面向对象语言,说C和C的区别,也就是在比较面向过程和面向对象的区别。 1.面向过程和面向…

WebGL系列教程九(动画)

目录 1 前言2 绘制立方体并进行纹理映射3 动画思路4 开始绘制4.1 在顶点着色器中声明旋转矩阵4.2 获取旋转矩阵变量并进行赋值4.3 计算角度4.4 每一帧都去绘制4.5 效果4.6 完整代码 5 总结 1 前言 上一篇我们讲了WebGL中的基础语法,现在我们已经讲过了三维物体的绘制…

TDengine 与 SCADA 强强联合:提升工业数据管理的效率与精准

随着时序数据库(Time Series Database)的日益普及,越来越多的工业自动化控制(工控)人员开始认识到其强大能力。然而,时序数据库在传统实时数据库应用领域,特别是在过程监控层的推广仍面临挑战&a…

【数据结构】排序算法---冒泡排序

文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaCGo 结语 1. 定义 冒泡排序(英语:Bubble sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的…

Android 13 固定systemUI的状态栏为黑底白字,不能被系统应用或者三方应用修改

目录 一.背景 二.思路 三.代码流程 1.colos.xml自定义颜色 2.设置状态栏的背景颜色 3.对View进行操作 ①.对Clock(状态栏左侧的数字时钟)进行操作 ②.对电池(BatteryMeterView)进行操作 4.锁屏状态栏 5.patch汇总 一.背景 客户需求将状态栏固定成黑底白字,并且不能让系…

ipython里如何用?快速查阅帮助

1、?用于查询函数帮助文档,??用于查询带源码的帮助文档 ?用于搜索内容,*作为通配符。

C++调用C# DLL之踩坑记录

C是非托管代码,C#则是托管代码,无法直接调用 CLR的介绍见CLR简介 MSDN提到了两种非托管-托管的交互技术:CLR Interop和COM Interop 后者要将C# 类库注册为COM组件,本文只探讨CLR,要通过C CLR写中间层代码 方式一&…

IDEA 通义灵码 插件使用体验

目录 前言 主要功能 演示代码 解释代码 生成单元测试 生成代码注释 生成优化建议 代码片段补全 总结 前言 自从 AI 技术开始大规模应用,老板就想让下面的牛马借助 AI 工具来提高编码效率,由于团队都没有在实际编码中深度使用过 AI 工具&#x…

Miracast/WifiDisplay开发相关的深入调研分析-android投屏实战开发

Miracast/WifiDisplay概念介绍 Miracast Miracast是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连(Wi-Fi Direct)为基础的无线显示标准。支持此标准的消费性电子产品(又称3C设备)可透过无线方式分享视频画面,例如…

VirtualBox 克隆已有的虚拟机

【前提】已经存在一个CentOS 7 虚拟机 【需求】克隆出来一个虚拟机,用于本机 【操作】 1.右击已有的虚拟机 -> 选择克隆 2.给新虚拟机起个名称 以及 生成新的MAC地址 3.克隆 4.修改网络和主机名称 # 修改网络编辑以下2个文件 vi /etc/sysconfig/network-scripts/ifcfg-enp…

Java之内部类

目录 实例内部类 静态内部类 局部内部类 匿名内部类 下面将讲解实例内部类,静态内部类,局部内部类和匿名内部类。 实例内部类 实例内部类(也称为非静态内部类)依赖于外部类的实例。这意味着,要创建实例内部类的实…

Kubernetes从零到精通(12-Ingress、Gateway API)

Ingress和Gateway API都是Kubernetes中用于管理外部访问集群服务的机制,但它们有不同的设计理念和适用场景。它们的基本原理是通过配置规则,将来自外部的网络流量路由到Kubernetes集群内部的服务上。 Ingress/Gateway API和Service Ingress/Gateway API…

Qt窗口——QToolBar

文章目录 工具栏创建工具栏设置toolTip工具栏配合菜单栏工具栏浮动状态 工具栏 QToolBar工具栏是应用程序中集成各种功能实现快捷键使用的一个区域。 可以有多个,也可以没有。 创建工具栏 #include "mainwindow.h" #include "ui_mainwindow.h&qu…

ARM 工业边缘计算机与 C# 编程的完美融合

在工业领域,随着智能化和数字化的不断推进,ARM 工业边缘计算机凭借其出色的性能和低功耗等优势,逐渐成为众多应用场景的重要支撑。而 C# 编程语言的强大功能和广泛适用性,使其在与 ARM 工业边缘计算机的结合中展现出了巨大的潜力。…