首先创建一个类
class Record:
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"{self.date},{self.order_id},{self.money},{self.province}"
其次再创建父文件和子文件
from main import Record
import json
class FileReader:
def read_data(self) ->list[Record]:
"""读取文件的数据,读到的每一条数据都转换为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():
dict_data = json.loads(line)
record = Record(dict_data["date"],dict_data["order_id"],int(dict_data["money"]),dict_data["province"])
record_list.append(record)
f.close()
return record_list
if __name__ == '__main__':
Tex= TextFileReader("D:/2011年1月销售数据.txt")
Json=JsonFileReader("D:/2011年2月销售数据JSON.txt")
list1=Tex.read_data()
list2=Json.read_data()
for l in list1:
print(l)
for l in list2:
print(l)
实现绘图
from main import Record
from test import FileReader,TextFileReader,JsonFileReader
from pyecharts.charts import Bar
from pyecharts.options import *
Tex= TextFileReader("D:/2011年1月销售数据.txt")
Json=JsonFileReader("D:/2011年2月销售数据JSON.txt")
jan_data=Tex.read_data()
feb_data=Json.read_data()
#将1月份2月份的数据合并成一个list来存储
all_data = jan_data+feb_data
#开始进行数据计算
#{”2011-01-01“:1534,”2012-01-02“:300,”2011-01-03“:650}
data_dict={}
for record in all_data:
if record.date in data_dict:
#当前日期已经有记录了,所以和老记录做累加即可
data_dict[record.date]+=record.money
else:
data_dict[record.date] = 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(title="每日营业额")
)
bar.render()
我看了四遍,才看懂,但是也还是不太会自己写,所以需要小伙伴们自己动手试试,完结,撒花,Keep going!