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

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始