数据分析案例

main.py


"""
面向对象数据分析案例
1、设计一个类可以完成数据的封装
2、设计一个抽象类,定义文件读取的相关功能,并使用类实现具体功能
3、读取文件,生产数据对象
4、进行数据需求的逻辑运算(计算每一天的销售额)
5、通过pyecharts进行图形绘制
"""

from file_define import FileReader,TextFileReader,JsonFileReader
from data_define import Record
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType
text_file_reader=TextFileReader("J:/2011年1月销售数据.txt")
josn_file_reader=JsonFileReader("J:/2011年2月销售数据JSON.txt")
jan_data=text_file_reader.read_data()
feb_data=josn_file_reader.read_data()
#将2个月份的数据合并为1个list存储
all_data=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()
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("每日销售额")
)
bar.render("每日销售额柱状图.html")

file_define.py

"""
文件相关的类定义
"""
import json

from data_define import Record
class FileReader:
    def read_data(self)->list[Record]:
        pass

class TextFileReader(FileReader):
    def __init__(self,path):
        self.path=path     #定义成员变量,记录文件的路径

    #复写父类方法
    def read_data(self)->list[Record]:
        f=open(self.path,"r",encoding="UTF-8")

        record_list=[]
        for line in f.readlines():
            line=line.strip()    #消除读取到的换行符
            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)->list[Record]:
        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"],data_dict["money"],data_dict["province"])
            record_list.append(record)
        f.close()
        return record_list

if __name__=='__main__':
    text_file_reader=TextFileReader("J:/2011年1月销售数据.txt")
    list1=text_file_reader.read_data()
    json_file_reader=JsonFileReader("J:/2011年2月销售数据JSON.txt")
    list2=json_file_reader.read_data()
    for l in list1:
        print(l)
    for l in list2:
        print(l)

data_define.py

"""
数据定义的类
"""
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}"

运行结果:
数据分析案例_第1张图片

你可能感兴趣的:(python,数据分析,python,数据挖掘)