Python面向对象实现数据分析的实例详解

Hazel
Hazel
发布时间:2026-10-16| 15人浏览过
原创

本文通过具体案例展示如何使用Python面向对象思想进行数据分析。内容涵盖数据类与文件读取抽象类的设计、多格式文件(文本与JSON)数据的读取与封装、每日销售额的逻辑计算,以及利用PyEcharts生成柱状图的完整流程。

案例

某公司拥有两份数据文件,现需对其进行分析和处理,计算每日的销售额并以柱状图表的形式进行展示。

 

需求分析

实现步骤

  • 设计一个类,可以完成数据的封装
  • 设计一个抽象类,定义文件读取的相关功能,并使用子类实现具体功能
  • 读取文件,生产数据对象
  • 进行数据需求的逻辑计算(计算每一天的销售额)
  • 通过PyEcharts进行图形绘制

代码

实例1

"""
数据定义的类
"""
 
class Record:
    def __init__(self,data,order_id,money,province):
        self.data=data
        self.order_id=order_id
        self.money=money
        self.province=province
    def __str__(self):
        return f"{self.data},{self.order_id},{self.money},{self.province}"

实例2

"""
和文件相关的类定义
"""
import json
 
from data_define import Record
 
class FileReader:
    def read_data(self):
        #读取文件的数据,读取到的每一条数据都转换为Record对象,将它们都封装到list内返回即可
        pass
 
class TextFileReader(FileReader):
    def __init__(self,path):
        self.path=path
    #复写(实现抽象方法)父类的方法
    def read_data(self):
        f=open(self.path,"r",encoding="utf-8")
        record_list=[]
        for line in f.readlines():
            line=line.strip()#消除读取到的每一行数据中的“\n”
            data_list=line.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
 
 
class JsonFileReader(FileReader):
    def __init__(self,path):
        self.path=path
    #复写(实现抽象方法)父类的方法
    def read_data(self):
        f=open(self.path,"r",encoding="utf-8")
        record_list=[]
        for line in f.readlines():
            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)
        f.close()
        return record_list
 
 
if __name__ == '__main__':
    text_file_reader=TextFileReader("D:/2011年1月销售数据.txt")
    list1=text_file_reader.read_data()
    for l in list1:
        print(l)
    print("========================================================================")
    json_file_reader=JsonFileReader("D:/2011年2月销售数据JSON.txt")
    list2=json_file_reader.read_data()
    for l in list2:
        print(l)

实例3

from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import *
 
from file_define import FileReader,TextFileReader,JsonFileReader
from data_define import Record
 
text_file_reader=TextFileReader("D:/2011年1月销售数据.txt")
json_file_reader=JsonFileReader("D:/2011年2月销售数据JSON.txt")
 
jan_data=text_file_reader.read_data()
feb_data=json_file_reader.read_data()
 
all_data:list[Record]=jan_data+feb_data
 
#开始进行数据计算
data_dict={}
for record in all_data:
    if record.data in data_dict.keys():
        data_dict[record.data]+=record.money
    else:
        data_dict[record.data]=record.money
 
 
#可视化
bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))
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")

 

可视化

数据集

链接:https://pan.baidu.com/s/1P3n-gvooVvmHEPak-xmkKg

提取码:hxvn

到此这篇关于Python面向对象实现数据分析的实例详解的文章就介绍到这了,更多相关Python数据分析内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。