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

这篇具有很好参考价值的文章主要介绍了Pyhton基础知识:整理18 -> 基于面向对象的知识完成数据分析的案例开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

 Pyhton基础知识:整理18 -> 基于面向对象的知识完成数据分析的案例开发,Python,python,数据分析,信息可视化

 

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

"""
    数据定义的类
"""
class Record:
    date = None   # 订单日期
    order_id = None   # 订单id
    money = None    # 订单金额
    province = None   # 销售地区

    def __init__(self, date, order_id, money, province):
        self.date = date
        self.order_id = order_id
        self.money = money
        self.province = province

    def __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 Record

text_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 + data2

data_dict = {}   # 定义一个空字典

for record in all_data:
    if record.date in data_dict.keys():
        # 已存在,需要累加
        data_dict[record.date] += record.money
    else:
        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 -> 基于面向对象的知识完成数据分析的案例开发,Python,python,数据分析,信息可视化文章来源地址https://www.toymoban.com/news/detail-797174.html

到了这里,关于Pyhton基础知识:整理18 -> 基于面向对象的知识完成数据分析的案例开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API

    Java 是一种由 Sun Microsystems 于 1995 年首次发布的编程语言和计算平台。Java 是一种通用的、基于类的、面向对象的编程语言,旨在减少实现依赖性。它是一个应用程序开发的计算平台。Java 快速、安全、可靠,因此在笔记本电脑、数据中心、游戏机、科学超级计算机、手机等领

    2024年03月24日
    浏览(81)
  • Elasticsearch的基础知识和架构设计,以及一些常用的功能——面向对象编程和数据结构的高级应用场景,以及相应的代码实现方法和工具

    作者:禅与计算机程序设计艺术 2019年,Elasticsearch正式发布了7.0版本。在这个版本更新中,新增了许多新特性和功能,包括全文搜索、分类聚合、分析器、图形化数据可视化等。无论对于企业或个人来说,都意味着更好的应用场景。但是,掌握Elasticsearch并非易事,需要不断学

    2024年02月07日
    浏览(46)
  • 软件工程——第12章面向对象实现知识点整理

    本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明! 1. 面向对象语言技术的特点?

    2024年02月15日
    浏览(43)
  • 软件工程——第9章面向对象方法学引论知识点整理

    本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明! 1.当前最好的软件开发技术是? 2.面向对象的原则是什么?

    2024年02月13日
    浏览(41)
  • Python基础知识:整理10 异常相关知识

        当在主函数中没有捕获处理异常时,会报异常错误 处理后   

    2024年01月18日
    浏览(50)
  • DFT基础知识整理

    站在一个IC前端设计人员的角度学习DFT基础知识,概念。 · 验证和测试的区别。 验证主要是确认功能,时序是否满足要求,一般在仿真环境中,输入激励,分析响应。根据验证阶段可以分为功能仿真,门级仿真,版图后仿真。 然而在芯片制造过程中,受到各种不确定因素的

    2024年02月13日
    浏览(39)
  • 深度学习基础知识整理

    Auto-encoders是一种人工神经网络,用于学习未标记数据的有效编码。它由两个部分组成:编码器和解码器。编码器将输入数据转换为一种更紧凑的表示形式,而解码器则将该表示形式转换回原始数据。这种方法可以用于降维,去噪,特征提取和生成模型。 自编码器的训练过程

    2024年01月17日
    浏览(44)
  • MySQL数据库基础知识,基础操作详细整理

    引入: 淘宝网,京东、微信,抖音等都有各自的功能,那么当我们退出系统的时候,下次再访问时,为什么信息还存在? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数

    2024年04月17日
    浏览(46)
  • CSP-S初赛基础知识整理

    持续更新中 关于部分 l a t e x latex l a t e x 在 csdn 不能很好的显示,更好的阅读体验。 计算机系统的组成 硬件系统和软件系统。 计算机硬件的五大组成 控制器、运算器、存储器、输入设备和输出设备。 [1-2]二进制 [1]基本定义及应用 逢二进一。后缀为 B texttt{B} B 。 是计算机

    2024年02月09日
    浏览(36)
  • 软件测试基础知识整理(八)- 软件缺陷

    目录 一、软件缺陷 1.1 缺陷定义 1.2 缺陷判定标准 1.3 软件缺陷产生的原因 1.4 软件缺陷产生的根源 1.5 软件缺陷信息  1.5.1 缺陷状态 1.5.2  缺陷严重程度  1.5.3 缺陷优先级 1.6 缺陷报告模板 1.7 缺陷报告注意事项 1.8 缺陷跟踪流程 1.9 缺陷数据分析关注的问题  软件或者程序中

    2024年02月06日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包