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

数据分析案例

data_define.py

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

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.money
    else:
        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")

结果图:

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值