数据分析案例

本文通过Python进行实际的数据分析操作,详细介绍了如何对数据进行封装处理,为后续的数据挖掘和建模奠定基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

"""
实现步骤
1.设计一个类,可以完成数据的封装
2.设计一个抽象类,来实现读取操作,用子类实现具体的功能
3.读取文件,生产数据对象
4.进行数据的逻辑计算
5.通过pyecharts绘图

"""
from pyecharts.options import *

from file_define import Read_file, TextRead, JsonRead
from record import Record
from pyecharts.charts import Bar
from pyecharts.charts import *
from pyecharts.globals import ThemeType
text_read = TextRead("E:/data1.txt")  # 获取对象
json_read = JsonRead("E:/data2.txt")
list_1: list[Record] = text_read.read_data()   # 获取数据并进行注解
list_2: list[Record] = json_read.read_data()
all_list = list_1+list_2


my_dict = {}
for record in all_list:
    if record.data in my_dict.keys():
        # 如果有记录就做累加
        my_dict[record.data] += record.money
    else:
        #  如果没有就等于当前money
        my_dict[record.data] = record.money

# 绘制图形
bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))
bar.add_xaxis(list(my_dict.keys()))
bar.add_yaxis("销售额", list(my_dict.values()),label_opts=LabelOpts(is_show=False))
bar.set_global_opts(
    title_opts=TitleOpts(title="每日销售额")
)
bar.render("每日销售额柱状图.html")

 完成对数据的封装

"""
记录数据
"""
class Record:
    def __init__(self, data, order_id, money, province):
        self.data = data
        self.order_id = order_id
        self.money = money
        self.province = province
    def __str__(self):
        return f"{self.data}, {self.order_id}, {self.money}, {self.province}"
# 用父类定义抽象方法,用子类来具体实现,比如csv文件读取和json文件读取
import json

from record import Record


class Read_file:
    def read_data(self) -> list[Record]:
        # 读取文件的数据,读到的每一条数据都转化为record对象,将她们都封装到list内再返回
        pass


class TextRead(Read_file):  # 读取文本文件
    def __init__(self, path):  # 使用构造方法,构建类对象会自动传参
        self.path = path  # 定义成员变量记录文件路径

    def read_data(self) -> list[Record]:  # 函数返回值类型注解
        f = open(self.path, "r", encoding="UTF-8")
        data_lines = f.readlines()
        record_list = []  # 定义一个空列表
        for line3 in data_lines:
            line3 = line3.strip()
            data_list = line3.split(",")  # 根据逗号进行分割,返回一个list
            # 创建一个record对象,并通过构建方法__int__直接传入参数
            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 JsonRead(Read_file):  # 读取文本文件
    def __init__(self, path):
        self.path = path  # 定义成员变量记录文件路径

    def read_data(self) -> list[Record]:
        f2 = open(self.path, "r", encoding="UTF-8")
        my_list = []
        data_lines = f2.readlines()
        for line in data_lines:
            data_dict = json.loads(line)  # 读取出来是一个字典
            record = Record(data_dict["date"], data_dict["order_id"], int(data_dict["money"]), data_dict["province"])
            my_list.append(record)

        f2.close()
        return my_list


if __name__ == '__main__':   # 展示数据
    text_read = TextRead("E:/data1.txt")  # 构建一个对象
    json_read = JsonRead("E:/data2.txt")
    list1 = json_read.read_data()  # 使用方法返回一个列表
    list2 = text_read.read_data()
    for line in list1:
        print(line)
    for line2 in list2:
        print(line2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值