• Python数据分析案例


    案例:某公司,有2份数据文件,现需要对其进行分析处理,计算每日的销售额并以柱状图表的形式进行展示。

     数据定义类

    1. """
    2. 数据定义的类
    3. """
    4. class Record:
    5. def __init__(self, date, order_id, money, province):
    6. self.date = date # 订单日期
    7. self.order_id = order_id # 订单ID
    8. self.money = money # 订单金额
    9. self.province = province # 销售省份
    10. def __str__(self):
    11. return f"{self.date}, {self.order_id}, {self.money}, {self.province}"

    文件定义类

    1. """
    2. 和文件相关的类定义
    3. """
    4. import json
    5. from data_define import Record
    6. # 先定义一个抽象类用来做顶层设计,确定有哪些功能需要实现
    7. class FileReader:
    8. def read_data(self) -> list[Record]:
    9. """读取文件的数据,读到的每一条数据都转换为Record对象,将它们都封装到list内返回即可"""
    10. pass
    11. class TextFileReader(FileReader):
    12. def __init__(self, path):
    13. self.path = path # 定义成员变量记录文件的路径
    14. # 复写(实现抽象方法)父类的方法
    15. def read_data(self) -> list[Record]:
    16. f = open(self.path, "r", encoding="UTF-8")
    17. record_list: list[Record] = []
    18. for line in f.readlines():
    19. line = line.strip() # 消除读取到的每一行数据中的\n
    20. data_list = line.split(",")
    21. record = Record(data_list[0], data_list[1], int(data_list[2]), data_list[3])
    22. record_list.append(record)
    23. f.close()
    24. return record_list
    25. class JsonFileReader(FileReader):
    26. def __init__(self, path):
    27. self.path = path # 定义成员变量记录文件的路径
    28. def read_data(self) -> list[Record]:
    29. f = open(self.path, "r", encoding="UTF-8")
    30. record_list: list[Record] = []
    31. for line in f.readlines():
    32. data_dict = json.loads(line)
    33. record = Record(data_dict["date"], data_dict["order_id"], int(data_dict["money"]), data_dict["province"])
    34. record_list.append(record)
    35. f.close()
    36. return record_list
    37. if __name__ == '__main__':
    38. text_file_reader = TextFileReader("D:/2011年1月销售数据.txt")
    39. json_file_reader = JsonFileReader("D:/2011年2月销售数据JSON.txt")
    40. list1 = text_file_reader.read_data()
    41. list2 = json_file_reader.read_data()
    42. for l in list1:
    43. print(l)
    44. for l in list2:
    45. print(l)

     数据计算处理

    1. """
    2. 面向对象,数据分析案例,主业务逻辑代码
    3. 实现步骤:
    4. 1. 设计一个类,可以完成数据的封装
    5. 2. 设计一个抽象类,定义文件读取的相关功能,并使用子类实现具体功能
    6. 3. 读取文件,生产数据对象
    7. 4. 进行数据需求的逻辑计算(计算每一天的销售额)
    8. 5. 通过PyEcharts进行图形绘制
    9. """
    10. from file_define import FileReader, TextFileReader, JsonFileReader
    11. from data_define import Record
    12. from pyecharts.charts import Bar
    13. from pyecharts.options import *
    14. from pyecharts.globals import ThemeType
    15. text_file_reader = TextFileReader("D:/2011年1月销售数据.txt")
    16. json_file_reader = JsonFileReader("D:/2011年2月销售数据JSON.txt")
    17. jan_data: list[Record] = text_file_reader.read_data()
    18. feb_data: list[Record] = json_file_reader.read_data()
    19. # 将2个月份的数据合并为1个list来存储
    20. all_data: list[Record] = jan_data + feb_data
    21. # 开始进行数据计算
    22. # {"2011-01-01": 1534, "2011-01-02": 300, "2011-01-03": 650}
    23. data_dict = {}
    24. for record in all_data:
    25. if record.date in data_dict.keys():
    26. # 当前日期已经有记录了,所以和老记录做累加即可
    27. data_dict[record.date] += record.money
    28. else:
    29. data_dict[record.date] = record.money
    30. # 可视化图表开发
    31. bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))
    32. bar.add_xaxis(list(data_dict.keys())) # 添加x轴的数据
    33. bar.add_yaxis("销售额", list(data_dict.values()), label_opts=LabelOpts(is_show=False)) # 添加了y轴数据
    34. bar.set_global_opts(
    35. title_opts=TitleOpts(title="每日销售额")
    36. )
    37. bar.render("每日销售额柱状图.html")

    实现效果

     

    这篇文章先介绍到这里了!

     

  • 相关阅读:
    语法练习:sum_double
    kernel32.dll下载地址分享,Kernel32.DLL文件丢失的修复指南
    springboot 添加项目依赖
    中国石油大学(北京)-《钻井液工艺原理》第二阶段在线作业
    Linux下文件和目录的基础操作
    2022“金九银十”精选20道JVM面试重点问题及十大模块知识点笔记,看看你会多少?
    【Spring Cloud Alibaba】9 - OpenFeign集成Sentinel实现服务降级
    后端技术栈
    Hadoop原理与技术——Hbase的基本操作
    又有新框架上线了,测试、AI 通通有「GitHub 热点速览」
  • 原文地址:https://blog.csdn.net/weixin_51293134/article/details/132791478