利用面向对象方法,处理数据文件【Python】

news2025/3/14 11:09:45

题目背景:处理两份数据文件(文本数据和JSON数据),用面向对象的方法,效果图用柱状图呈现。

本题思路:
1.首先,创建一个【基础数据类】,名为Record,它将包含成员属性和成员方法。这个类将作为数据处理的基础结构。

2.接着,创建一个【处理数据父类】,名为FileReader,它将包含成员方法,这个成员方法将被子类继承和实现(即为抽象方法)。

3.然后,创建两个子类,分别是【文本数据类】和【JSON数据类】。这两个类将继承父类的成员方法(即为复写)。

4.最后,在主函数体内,定义图形效果和数据整合处理。
注:接下来的代码,将按照解题思路依次呈现。

数据文件如下所示

文本数据:
在这里插入图片描述

JSON数据文件:
在这里插入图片描述

代码如下:

1.基础数据类(Record)

#创建【基础数据类】,名为data_define.py文件
class Record:
	'''定义成员属性'''
	def __init__(self,date,order_id,money,province):
			self.date = date
			self.order_id = order_id 
			self.money = money
			self.province = province

	'''利用魔法方法str,将后续返回来的数据,处理为字符串'''
	def __str__(self):
			return f"{self.date},{self.order_id},{self.money},{self.province}"

2.数据父类及两个子类

#创建数据父类,名为file_define.py文件
import json
from data_define import Record

#定义父类,方便后续子类复写,生成Record对象,并存为list列表
class FileReader:
	def read_data(self) -> list[Record]:
			pass


#处理文本内容文件:
class TextFileReader(FileRearder):
    #定义成员变量
    def __init__(self,path):
        self.path = path        #文件路径

    #复写,父类的成员方法
    def read_data(self) -> list[Record]:
        f = open(self.path,"r",encoding="UTF-8")
        record_list = []
        
        for i in f.readlines():
            i = i.strip()
            data_list = i.split(",")
            record = Record(data_list[0],data_list[1],int(data_list[2]),data_list[3])
            record_list.append(record)

        f.close()
        return record_list


#处理JSON文件内容
class JsonFileReader(FileRearder):
    def __init__(self,path):
        self.path = path

    def read_data(self) -> list[Record]:
        f = open(self.path,"r",encoding="UTF-8")
        data_list = []
        for i in f.readlines():
            data_dict = json.loads(i)
            record = Record(data_dict["date"],data_dict["order_id"],int(data_dict["money"]),data_dict["province"])
            data_list.append(record)

        f.close()
        return data_list


#测试(选写)
if __name__ == '__main__':
    text_file_reader = TextFileReader("D:/不太重要的文档/Python/资料/资料/2011年1月销售数据.txt")
    t1 = text_file_reader.read_data()

    json_file_reader = JsonFileReader("D:/不太重要的文档/Python/资料/资料/2011年2月销售数据JSON.txt")
    t2 = json_file_reader.read_data()

for i in t1:
	print(i)

for i in t2:
	print(i)

3.主体

#将主函数,命名为main.py文件
from file_define import *
from data_define import *
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType

text_file_reader = TextFileReader("D:/不太重要的文档/Python/资料/资料/2011年1月销售数据.txt")
jan_data: list[Record] = text_file_reader.read_data()


json_file_reader = JsonFileReader("D:/不太重要的文档/Python/资料/资料/2011年2月销售数据JSON.txt")
feb_data: list[Record] = json_file_reader.read_data()

#将两个月份的数据,进行合并
all_list = jan_data + feb_data

#生成字典:{"2023-01-01":1234}.累加计算一天内的营业额
data_dict = {}

for i in all_list:
    if i.date in data_dict.keys():
        data_dict[i.date] += i.money
    else:
        data_dict[i.date] = i.money


#生成可视化图表
bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))

bar.add_xaxis(list(data_dict.keys()))       #将时间 "2023-01-01" 作为X轴

bar.add_yaxis("销售表",list(data_dict.values()),label_opts=LabelOpts(is_show=False))   #数值作为Y轴数据

bar.set_global_opts(
    title_opts = TitleOpts(title="销售表")
)

bar.render()

最后效果:
在这里插入图片描述在这里插入图片描述

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

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

相关文章

【数据结构-堆】堆

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

嵌入式行业这个领域是否值得坚持

今日话题,嵌入式行业,特别是对于嵌入式新人,是否值得坚持这个领域?对于想要进入嵌入式行业的人来说,坚持是明智的选择。这个领域涉及硬件和软件,技术更新较慢,但它也为你提供了积累经验的机会。…

mysql学习查缺补漏1---基础部分(小滴课堂)

举例: DDL:建库,建表。 DML:对表的数据进行增删改操作。 DQL:对数据进行查询。 DCL:对用户的权限进行设置。 create table teacher as select * from student where 12; 该条语句只用于复制表结构&…

Kubernetes 使用configmap挂载卷给Pod内的nginx容器

目录 实验:使用configmap挂载卷给Pod内的nginx容器 1、创建nginx.conf配置文件(必须由nginx镜像里的nginx.conf修改而来,防止出现配置不相似的情况出现,导致访问不了nginx网页) 2、通过nginx.conf文件创建configmap容…

Java 代理模式之静态代理与动态代理

1,代理模式 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。 代理模式的目的: (1)通过引入代理对象的方式来间接访问目标对象,防…

对话式人工智能(Conversational AI):提高模型的智能程度和扩展能力

对话式人工智能的趋势与挑战 对话式人工智能 (AI) 已经出现在许多家庭的客厅、汽车和在线购物体验中。聊天机器人、语音助手、智能扬声器、交互式语音识别系统:所有这些都是对话式 AI 的示例。由于该领域通过增强的客户体验提供了更多可访问性,因此吸引…

PHP自己的框架2.0结合容器技术(重构篇二)

目录 1、使用容器实现框架加载类运行 2、 创建框架容器类core/fm/Di.php 3、框架使用容器类来执行public/index.php 4、运行效果还是一样 1、使用容器实现框架加载类运行 2、 创建框架容器类core/fm/Di.php 什么是容器?容器就相当于盒子,把很多类放里…

录音怎么转换成mp3格式?支持二十多种格式

录音怎么转换成mp3格式?在我们的日常生活和工作中,录音是一项非常有用的工具,随着手机以及录音设备越来越普及化,让录音这件事情变得非常的简单,录音可以帮助我们解决非常多的事情。例如通过录音,我们可以记…

Linux C++ OpenVINO 物体检测 Demo

目录 main.cpp #include <iostream> #include <string> #include <vector> #include <openvino/openvino.hpp> #include <opencv2/opencv.hpp> #include <dirent.h> #include <stdio.h> #include <time.h> #include …

OJ练习第171题——复制带随机指针的链表

复制带随机指针的链表 力扣链接&#xff1a;138. 复制带随机指针的链表 题目描述 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个…

Temu新手入门需要注意哪些细节?如何在Temu中添加尺码?

要在temu平台取得商业成功&#xff0c;创业者们必须注重商品策划和市场调研、关注市场动向和用户反馈、建立良好的互动和交流机制、发挥temu的优势和特点&#xff0c;本文介绍了temu新手入门需要注意细节以及如何在TEMU中添加尺码&#xff0c;快来学习一下吧。 temu新手入门需…

使用Javassist修改组件化 Router

工程目录图 请点击下面工程名称&#xff0c;跳转到代码的仓库页面&#xff0c;将工程 下载下来 Demo Code 里有详细的注释 代码&#xff1a;TransformDemo

Python中数据去重的重要性、技巧和实现代码

在数据处理和分析的过程中&#xff0c;数据去重是数据处理和分析的关键步骤之一。重复的数据会导致分析结果的偏差&#xff0c;影响决策的准确性。通过数据去重&#xff0c;我们可以确保分析所使用的数据集是干净、准确的&#xff0c;从而提高分析结果的可靠性&#xff0c;Pyth…

【LeetCode题目详解】第十章 单调栈part03 84.柱状图中最大的矩形(day60补)

本文章代码以c为例&#xff01; 一、力扣第84题&#xff1a;柱状图中最大的矩形 题目&#xff1a; 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 …

【数据结构】—堆详解(手把手带你用C语言实现)

食用指南&#xff1a;本文在有C基础的情况下食用更佳 &#x1f525;这就不得不推荐此专栏了&#xff1a;C语言 ♈️今日夜电波&#xff1a;水星—今泉愛夏 1:10 ━━━━━━️&#x1f49f;──────── 4:23 …

掌控你的Mac——用Bookshelf Library简化文件管理

Bookshelf Library for Mac是一款高效的文件索引管理工具&#xff0c;它可以帮助你轻松整理和查找Mac上的所有文档和书籍。下面我们来看看这款工具的五个特点。 安装&#xff1a;Bookshelf Library for Mac(文件索引管理工具)v6.3.4激活版 第一&#xff0c;Bookshelf Library…

【广州华锐互动】工业零件拆装VR培训:无需前往现场,提高学习效率

工业零件拆装VR培训是一种新兴的培训方式&#xff0c;通过虚拟现实技术将设备拆解过程进行模拟&#xff0c;让学员在虚拟环境中进行实际操作和学习。这种培训方式具有许多益处&#xff0c;本文将对其进行详细阐述。 首先&#xff0c;工业零件拆装VR培训可以提高学员的学习效率。…

好用的软件测试框架有哪些?测试框架的作用是什么?

软件测试框架是现代软件开发过程中至关重要的工具&#xff0c;它可以帮助开发团队更加高效地进行测试和验证工作&#xff0c;从而大大提高软件质量和用户体验。 一、好用的软件测试框架 1. Selenium&#xff1a;作为一种开源的自动化测试框架&#xff0c;Selenium具有功能强大…

【Jmeter】什么是BeanShell?

一、什么是BeanShell&#xff1f; BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器&#xff0c;JMeter性能测试工具也充分接纳了BeanShell解释器&#xff0c;封装成了可配置的BeanShell前置和后置处理器&#xff0c;分别是 BeanShell Pre…

快速打造BI大屏 激活各行业数据价值

BI的概念普遍认为最早由Gartner公司提出&#xff0c;简单可理解为基于现代企业经营理论与信息应用技术系统对信息、数据进行挖掘、分析和处理&#xff0c;最终辅助商业决策的一个企业服务解决方案。 在企业数字化进程中&#xff0c;这样的解决方案主要以信息技术系统为底座&am…