广州教育学会网站建设,wordpress支持什么语言包,建筑公司网站案例,宁波如何做seo排名优化四、使用PyEcharts数据分析案例#xff08;面向对象版#xff09;
【前言#xff1a;为了巩固之前的Python基础知识#xff08;一#xff09;到#xff08;五#xff09;#xff0c;并为后续使用Python作为数据处理的好帮手#xff0c;我们一起来用面向对象的思想来理…四、使用PyEcharts数据分析案例面向对象版
【前言为了巩固之前的Python基础知识一到五并为后续使用Python作为数据处理的好帮手我们一起来用面向对象的思想来理解代码】
1.文件读取与数据处理面向对象版
# main.py文本数据格式如下
订单编号下单日期下单金额下单账户
json数据格式如下
{id编号data日期money金额account账户}import json
# 设计一个类完成数据封装
class data_record:def __init__(self, id, data, money, account):self.id id # 订单编号self.data data # 下单日期self.money money # 下单金额self.account account # 下单账户当类对象需要被转换为字符串之前会输出内存地址需要使用魔术方法__str__控制类转换为字符串的行为详情请看到最后def __str__(self):return f{self.id}, {self.data}, {self.money}, {self.account}# 设计一个抽象类定义文件读取相关功能
class file_reader:# 读取文件数据将读到的每条数据转换成list返回data_record类def read_data(self) - list[data_record]:pass# 读取文本数据子类
class txt_file_reader(file_reader):# 使用构造方法定义文件路径def __init__(self, path):self.path path# 复写抽象方法def read_data(self) - list[data_record]:f open(self.path, r, encodingUTF-8)data_record_list: list[data_record] []for line in f.readlines():# 注意此处去除读取到的line中的换行符line line.strip()# 注意split方法得到一个列表要将字符串表示的money转换成intdata_list line.split()data data_record(data_list[0], data_list[1], int(data_list[2]), data_list[3])data_record_list.append(data)f.close()return data_record_list# 读取json类型数据子类
class json_file_reader(file_reader):# 使用构造方法定义文件路径def __init__(self, path):self.path path# 复写抽象方法def read_data(self) - list[data_record]:f open(self.path, r, encodingUTF-8)data_record_list: list[data_record] []for line in f.readlines():# 将读取到的每一行json类型转换成python数据类型——字典类型data_dict json.loads(line)data data_record(data_dict[id],data_dict[data],int(data_dict[money]),data_dict[account])data_record_list.append(data)f.close()return data_record_listtxt_file txt_file_reader(D:/txt_file.txt)
json_file json_file_reader(D:/json_file.txt)
txt_list: list[data_record] txt_file.read_data()
json_list: list[data_record] json_file.read_data()
运行
for line in txt_list:print(line)for line in json_list:print(line)
当类对象需要被转换为字符串之前会输出内存地址
故此时仅打印数据的地址
需要使用魔术方法__str__控制类转换为字符串的行为
# 将两个列表数据内容合并
all_list: list[data_record] txt_list json_list
# 将同一天的销售金额累加使用字典存储
data_dict {}
for record in all_list:# 当前日期已经存在直接累加money即可if record.data in data_dict.keys():data_dict[record.data] record.money# 当前日期不存在需要添加该日期且将money存入else:data_dict[record.data] record.moneyprint(data_dict)
输出结果
{07-01: 5081, 07-02: 5360, 07-03: 2096, 07-04: 5174, 07-05: 5344, 07-06: 3162, 07-07: 2141, 07-08: 1701, 07-09: 3180}2.可视化开发
# 在main.py中导入包
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType# 在1.文件读取与数据处理面向对象版代码基础上添加# 得到柱状图类对象
bar Bar(init_optsInitOpts(themeThemeType.LIGHT))
# 将字典中所有日期作为x轴参数所有金额作为y轴参数
bar.add_xaxis(list(data_dict.keys()))
bar.add_yaxis(总金额, list(data_dict.values()), label_optsLabelOpts(is_showFalse))bar.set_global_opts(title_optsTitleOpts(title每日销售总金额)
)bar.render(每日销售总金额柱状图.html)最终效果 【记录学习过程的笔记欢迎大家一起讨论会持续更新】