当前位置: 首页 > news >正文

Day13-Python基础学习之数据分析案例

数据分析案例

data_define.py

# 数据定义的类
class Record:def __init__(self, date, order_id, money, province):self.date = dateself.order_id = order_idself.money = moneyself.province = province
​def __str__(self):return f"{self.date}, {self.order_id}, {self.money}, {self.province}"

file_define.py

# 因为读取文件的格式不同,所以采取抽象类
# 和文件相关的类定义
# 先定义一个抽象类用于做顶层设计
import json
​
from 数据分析案例.data_define import Record
​
​
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: list[Record] = []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: list[Record] = []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("D:/BaiduNetdiskDownload/第13章资料/2011年1月销售数据.txt")json_file_reader = JsonFileReader("D:/BaiduNetdiskDownload/第13章资料/2011年2月销售数据JSON.txt")list1 = text_file_reader.read_data()list2 = json_file_reader.read_data()
​for l in list1:print(l)
​for l in list2:print(l)

main.py

from file_define import FileReader, TextFileReader, JsonFileReader
from data_define import Record
​
text_file_reader = TextFileReader("D:/BaiduNetdiskDownload/第13章资料/2011年1月销售数据.txt")
json_file_reader = JsonFileReader("D:/BaiduNetdiskDownload/第13章资料/2011年2月销售数据JSON.txt")
​
# 获取月份数据
jan_data: list[Record] = text_file_reader.read_data()
feb_data: list[Record] = json_file_reader.read_data()
# 将两个月份的数据合成一个list
all_data: list[Record] = jan_data + feb_data
​
# 开始数据计算
data_dict = {}
for record in all_data:if record.date in data_dict.keys():"""和老记录做累加即可"""data_dict[record.date] += record.moneyelse:data_dict[record.date] = record.money
​
print(data_dict)
​
# 可视化开发
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()))
bar.add_yaxis("销售额", list(data_dict.values()), label_opts=LabelOpts(is_show=False))
bar.set_global_opts(title_opts=TitleOpts(title="每日销售额")
)
​
bar.render("每日销售额柱状图.html")

结果图:

http://www.lryc.cn/news/339654.html

相关文章:

  • 研究生,该学单片机还是plc。?
  • 【Java】导出Mysql表表结构与注释数据字典
  • 第07-2章 TCP/IP模型
  • 【办公类-21-15】 20240410三级育婴师 712道单选题(题目与答案合并word)
  • Vue3+Vant开发:登录功能
  • Linux程序调试优化(1)——内存占用详解及优化思路
  • 高效解决Visual Studio Code中文乱码问题
  • springboot接口提高查询速度方法
  • 如何在苹果手机上安装iOS应用的.ipa文件?
  • IDEA pom.xml显示灰色并被划线
  • 玄子Share-使用 Pycharm 执行 Shell 脚本
  • 如何让Nrf connect、EFR connect直接显示特征值数据及其单位
  • python笔记
  • Java编译期注解处理器AbstractProcessor使用
  • JetBrains相关的IDE有哪些?
  • Git-常规用法-含解决分支版本冲突解决方法
  • 基于springboot实现大型商场应急预案管理系统项目【项目源码+论文说明】
  • 系统学c#:1、基础准备(软件下载与安装)
  • 解决CSS中鼠标移入到某个元素其子元素被遮挡的问题
  • 【华为OD机试】虚拟理财游戏【C卷|100分】
  • ssh 使用
  • Springboot+Vue项目-基于Java+MySQL的母婴商城系统(附源码+演示视频+LW)
  • Android多线程:Handler runOnUiThread 异步消息处理机制
  • AndroidStudio 导出aar包,并使用
  • python与设计模式之工厂模式的那些事儿
  • 什么是区块链?
  • 2022年电赛F题23年电赛D题-信号调制度测量装置说明中提到带通采样定律。
  • Rust面试宝典第2题:逆序输出整数
  • Linux笔记之查看docker容器目录映射
  • ​​​​网络编程探索系列之——广播原理剖析