Python学习打卡:day15

day15

笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了

目录

110、数据分析案例步骤 1 ------ 文件读取

data_define_108.py

python 复制代码
"""
数据定义的类
"""

class Record:
    date = None
    order_id = None
    money = None
    province = None

    def __init__(self, m_date, m_order_id, m_money, m_province):
        self.date = m_date              # 日期
        self.order_id = m_order_id      # 订单号
        self.money = m_money            # 金额
        self.province = m_province      # 省份

    def __str__(self):
        return f"{self.date}, {self.order_id}, {self.money}, {self.province}"

file_define_108.py

python 复制代码
"""
和文件相关的类定义
"""
import json
from typing import List
from data_define_108 import Record

# 先定义一个抽象类用来做顶层设计,确定有哪些功能需要实现
class FileReader:

    def read_data(self) -> List[Record]:
        """读取文件的数据,读取到的每一条数据转换为 Record 对象,将他们都封装到 List内再返回即可"""
        pass

class TextFileReader(FileReader):
    path = None

    def __init__(self, m_path):
        self.path = m_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()     # 消除读取到的每一行数据中的 \n
            data_list = line.split(",")
            record = Record(data_list[0], data_list[1], int(data_list[2]), data_list[3])
            record_list.append(record)
            # print(line)
        f.close()
        return record_list

class JsonFileReader(FileReader):
    path = None

    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"], int(data_dict["money"]), data_dict["province"])
            record_list.append(record)
        f.close()
        return record_list


if __name__ == '__main__':
    text_file_reader = TextFileReader("/home/yin-roc/1-Github/Ubuntu20.04-VMware/pythonProject/Python_Learning/03_Python第三阶段/数据分析案例/2011年1月销售数据.txt")
    json_file_reader = JsonFileReader("/home/yin-roc/1-Github/Ubuntu20.04-VMware/pythonProject/Python_Learning/03_Python第三阶段/数据分析案例/2011年2月销售数据JSON.txt")
    list1 = text_file_reader.read_data()
    list2 = json_file_reader.read_data()

    for l in list1:
        print(f"list1:{l}")

    for l in list2:
        print(f"list2:{l}")

111、数据分析案例步骤二------数据计算

python 复制代码
"""
面向对象,数据分析案例,主业务逻辑代码
实现步骤:
1.设计一个类,可以完成数据的封装
2.设计一个抽象类,定义文件读取的相关功能,并使用子类实现具体的功能
3.读取文件,生产数据对象
4.进行数据需求的逻辑计算(计算每一天的销售额)
5.通过 PyEcharts 进行图形绘制
"""

from file_define_108 import FileReader, TextFileReader, JsonFileReader
from data_define_108 import Record
from typing import List

text_file_reader = TextFileReader("/home/yin-roc/1-Github/Ubuntu20.04-VMware/pythonProject/Python_Learning/03_Python第三阶段/数据分析案例/2011年1月销售数据.txt")
json_file_reader = JsonFileReader("/home/yin-roc/1-Github/Ubuntu20.04-VMware/pythonProject/Python_Learning/03_Python第三阶段/数据分析案例/2011年2月销售数据JSON.txt")

jan_data: List[Record] = text_file_reader.read_data()
feb_data: List[Record] = json_file_reader.read_data()

# 将 2 个月份的数据合并为 1 个 list 来存储
all_data: List[Record] = jan_data + feb_data

# 开始进行数据计算
# {"2011-01-01": 1534, "2011-01-02": 300, "2011-01-03": 650}
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)

112、数据分析案例步骤3------可视化开发

python 复制代码
"""
面向对象,数据分析案例,主业务逻辑代码
实现步骤:
1.设计一个类,可以完成数据的封装
2.设计一个抽象类,定义文件读取的相关功能,并使用子类实现具体的功能
3.读取文件,生产数据对象
4.进行数据需求的逻辑计算(计算每一天的销售额)
5.通过 PyEcharts 进行图形绘制
"""

from file_define_108 import FileReader, TextFileReader, JsonFileReader
from data_define_108 import Record
from typing import List
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType

text_file_reader = TextFileReader("/home/yin-roc/1-Github/Ubuntu20.04-VMware/pythonProject/Python_Learning/03_Python第三阶段/数据分析案例/2011年1月销售数据.txt")
json_file_reader = JsonFileReader("/home/yin-roc/1-Github/Ubuntu20.04-VMware/pythonProject/Python_Learning/03_Python第三阶段/数据分析案例/2011年2月销售数据JSON.txt")

jan_data: List[Record] = text_file_reader.read_data()
feb_data: List[Record] = json_file_reader.read_data()

# 将 2 个月份的数据合并为 1 个 list 来存储
all_data: List[Record] = jan_data + feb_data

# 开始进行数据计算
# {"2011-01-01": 1534, "2011-01-02": 300, "2011-01-03": 650}
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)

# 可视化开发
bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))
bar.add_xaxis(list(data_dict.keys()))           # 添加 x 轴的数据
bar.add_yaxis("销售额", list(data_dict.values()), label_opts=LabelOpts(is_show=False))  # 添加了 y 轴数据
bar.set_global_opts(
    title_opts=TitleOpts(title="每日销售额")
)

bar.render("每日销售额柱状图.html")

结果展示:

113、数据库介绍

数据库是什么?有什么作用呢?

数据库就是指数据存储的库,作用就是组织数据并存储数据。

数据库如何组织数据呢

按照:库 -> 表 -> 数据 三个层级进行组织

数据库软件

数据库软件就是提供库 -> 表 -> 数据,这种数据组织形式的工具软件,也称之为数据库管理系统。

常见的数据库软件有:Oracle、MySQL、SQL Server、PostgreSQL、SQLite,课程以 MySQL 软件为基础进行学习。

数据库和 SQL 的关系

数据库是用来存储数据的,在这个过程中,会涉及到:

  • 数据的新增
  • 数据的删除
  • 数据的修改
  • 数据的查询
  • 数据库、数据表的管理

等等

而SQL语言,就是一种对数据库、数据进行操作、管理、查询的工具。

使用数据库软件去获得库 -> 表 -> 数据,这种数据组织、存储的能力

并借助SQL语言,完成对数据的增删改查等操作

114、MySQL 的安装

下载地址

1、下载

2、安装

3、配置环境变量

4、验证

将MySQL安装目录的bin文件夹的路径,复制进入即可,通过cmd命令提示符,输入:

mysql -uroot -p

回车后输入密码即可。

115、使用图形化工具操作MySQL数据库软件

跨平台、开源、免费的图形化工具:DBeaver,下载地址

安装

连接MySQL





相关推荐
Chef_Chen2 分钟前
从0开始学习机器学习--Day22--优化总结以及误差作业(上)
人工智能·学习·机器学习
天天要nx3 分钟前
D64【python 接口自动化学习】- python基础之数据库
数据库·python
小奥超人6 分钟前
PPT技巧:如何合并PPT文件?
windows·经验分享·microsoft·powerpoint·办公技巧
虾球xz17 分钟前
游戏引擎学习第11天
stm32·学习·游戏引擎
心怀梦想的咸鱼20 分钟前
Ue5 umg学习(三)文本控件
学习·ue5
心怀梦想的咸鱼22 分钟前
Ue5 umg学习(二)图像控件,锚点
学习·ue5
feifeikon42 分钟前
Python Day5 进阶语法(列表表达式/三元/断言/with-as/异常捕获/字符串方法/lambda函数
开发语言·python
MarcoAI1 小时前
github SSH连接(windows)
windows·ssh·github
杰仔正在努力1 小时前
python成长技能之枚举类
开发语言·python
Eiceblue1 小时前
通过Python 调整Excel行高、列宽
开发语言·vscode·python·pycharm·excel