跳转至

2.2 数据集分析

学习目标

  • 掌握对投满分项目数据集进行快速分析的代码实现.

(一) 代码逻辑图

数据及代码位置TMFCode/01-data

本部分主要完成两个py脚本:config.py与dataEDA.py

(1)config.py

在我们进入数据分析或者模型构建,通常我们会先实现一个配置文件config.py,方便我们对一些文件数据路径管理。这种方式在实际的生产环境中,非常常见,而不是直接将路径硬编码到我们的代码中。所以当我们拿到项目时候,先查看配置文件,并切换为自己对应的路径。

目的:方便我们的管理以及维护。

(2)dataEDA.py

探索性数据分析(Exploratory Data Analysis)代码,例如train.txt、test.tx或者相关数据文件的分析代码。前面我们整体已经知道train.txt主要为两列,一列是文本,一列是标签。我们可以分析以下指标

  • 训练等相关数据数据量

  • train.txt的类别样本是否均衡,类别占比情况

  • 样本的文本大概是怎样的

  • ......

image-20250526100520721

(二) 代码实现

2.1 配置文件config.py

config.py代码位置: TMFCode/01-data/config.py

import os
class Config():
    def __init__(self):
        self.train_datapath="./train.txt"
        self.test_datapath="./test.txt"
        self.dev_datapath="./dev.txt"
        self.class_datapath="./class.txt"

if __name__ == '__main__':
    conf=Config()
    print(conf.train_datapath)
    print(conf.test_datapath)

2.2 数据分析dataEDA.py

代码位置:TMFCode/01-data/dataEDA.py

# 导入需要的工具
import pandas as pd  # 用于处理表格数据
from collections import Counter  # 用于统计标签
from config import Config  # 导入配置类

# 创建配置对象,获取数据文件路径
config = Config()
file_path = config.train_datapath  # 默认使用训练数据文件 train.txt

# 第一步:读取数据并查看基本信息
data = pd.read_csv(file_path, sep='\t', names=['text', 'label'])  # 读取文件,列名为“文本”和“标签”
print("前5行数据:")
print(data.head(5))  # 显示前5行,了解数据长什么样
print(f"总数据量:{len(data)} 行")  # 显示总行数

# 第二步:统计标签分布
label_counts = Counter(data['label'])  # 数一数每个标签出现了几次
print("\n标签分布:")
for label, count in label_counts.items():
    print(f"标签 {label}{count} 次")  # 输出每个标签的次数

# 第三步:计算标签比例
total_rows = len(data)  # 总行数
print("\n标签比例:")
for label, count in label_counts.items():
    percent = (count / total_rows) * 100  # 计算百分比
    print(f"标签 {label}{percent:.2f}%")  # 输出百分比,保留2位小数

# 第四步:分析文本长度
data['text_length'] = data['text'].str.len()  # 计算每条文本的字符数
print("\n文本长度前10行:")
print(data[['text', 'text_length']].head(10))  # 只显示文本和长度列
print("\n文本长度统计:")
print(f"平均长度:{data['text_length'].mean():.2f} 字符")  # 平均值
print(f"长度标准差:{data['text_length'].std():.2f} 字符")  # 标准差
print(f"最大长度:{data['text_length'].max()} 字符")  # 最大值
print(f"最小长度:{data['text_length'].min()} 字符")  # 最小值

(三) 本节小结

  • 本小节给大家介绍是项目的数据分析逻辑与思路。