Pyhton基础知识:整理18 -> 基于面向对象的知识完成数据分析的案例开发

本文主要是介绍Pyhton基础知识:整理18 -> 基于面向对象的知识完成数据分析的案例开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据准备:两份数据,一份是是字符串的形式,一份是json格式,之后对数据处理后,需要合并为一份的数据,进而进行图表的开发

 

 

1 设计一个类,完成对数据的封装

"""数据定义的类
"""
class Record:date = None   # 订单日期order_id = None   # 订单idmoney = None    # 订单金额province = None   # 销售地区def __init__(self, date, order_id, money, province):self.date = dateself.order_id = order_idself.money = moneyself.province = provincedef __str__(self):return f"date: {self.date}, order_id: {self.order_id}, money: {self.money}, province: {self.province}"

2 设计一个抽象类,定义文件读取的相关功能,并使用子类实现具体的功能

"""
和文件相关的类定义
"""from data_defined import Record
import json# 先定义一个抽象类来做顶层设计,确定有哪些功能需要实现
class FileReader:def read_data(self):"""读取文件的数据,读到的每一条数据都转换为Record对象,将它们都封装到list内,返回即可"""pass# 子类1
class TextFileReader(FileReader):def __init__(self, path):self.path = path  # 定义成员变量,记录文件的路径# 复写父类的方法(实现抽象方法)def read_data(self):"""读取文本文件的数据"""fr1 = open(self.path, 'r', encoding="UTF-8")lines = fr1.readlines()fr1.close()record_list: list[Record] = []for line in lines:line = line.strip("\n")  # 去掉换行符data_ls = line.split(",")# print(data_ls)record = Record(data_ls[0], data_ls[1], int(data_ls[2]), data_ls[3])record_list.append(record)return record_list# 子类2
class JsonFileReader(FileReader):def __init__(self, path):self.path = path  # 定义成员变量,记录文件的路径# 复写父类的方法(实现抽象方法)def read_data(self):"""读取json文件的数据"""fr2 = open(self.path, "r", encoding="UTF-8")lines = fr2.readlines()fr2.close()record_list: list[Record] = []for line in lines:data_dict = json.loads(line)record = Record(data_dict["date"], data_dict["order_id"], int(data_dict["money"]), data_dict["province"])record_list.append(record)return record_list

3 数据处理

from file_defined import FileReader, TextFileReader, JsonFileReader
from data_defined import Recordtext_file_reader = TextFileReader("D:/PyCharm_projects/python_study_projects/text/2011年1月销售数据.txt")
data1 = text_file_reader.read_data()json_file_reader = JsonFileReader("D:/PyCharm_projects/python_study_projects/text/2011年2月销售数据JSON.txt")
data2 = json_file_reader.read_data()
# print(type(data2))   # list
print(data2)# 将2个月份的数据合并为1个list
all_data = data1 + data2data_dict = {}   # 定义一个空字典for record in all_data:if record.date in data_dict.keys():# 已存在,需要累加data_dict[record.date] += record.moneyelse:data_dict[record.date] = record.money
print(data_dict)

 

4 可视化图表开发

from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType# 可视化图表开发
bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))   # 设置主题bar.add_xaxis(list(data_dict.keys()))  # 添加 x 轴的数据
bar.add_yaxis("销售额", list(data_dict.values()), label_opts=LabelOpts(is_show=False))   # 添加 y 轴的数据, is_show=False表示不展示数据bar.set_global_opts(title_opts=TitleOpts(title="2011年1月-2月销售数据", pos_left="center", pos_top="5%")
)bar.render("D:/PyCharm_projects/python_study_projects/modules/bar_sale_chart.html")

这篇关于Pyhton基础知识:整理18 -> 基于面向对象的知识完成数据分析的案例开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/614846

相关文章

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地