Skip to content

信用评分模型数据清洗和标注流程设计

1.导入库

python
import pandas as pd
  • 导入 pandas 库,⽤于数据处理和分析,通常别名为 pd

2.加载数据集

python
data = pd.read_csv('finance数据集.csv')
print(data.head())
  • pd.read_csv() : 读取CSV文件

    • 参数:文件路径('finance数据集.csv')
  • data.head() : 显示数据框的前5行

  • 功能:加载数据集并预览前5行数据

3.导入可视化库

python
import matplotlib.pyplot as plt
import seaborn as sns
  • matplotlib.pyplot : Python绘图库
  • seaborn : 基于matplotlib的统计数据可视化库

4.绘制箱线图

python
plt.figure(figsize=(12, 8))
numeric_cols = data.select_dtypes(include=['float64', 'int64']).columns
for i, col in enumerate(numeric_cols, 1):
	plt.subplot(3, 4, i)
	sns.boxplot(x=data[col])
	plt.title(col)
plt.tight_layout()
plt.show()
  • plt.figure(figsize=(12, 8)) : 设置图形大小(宽12英寸,高8英寸)

  • select_dtypes() : 选择指定数据类型的列

    • include=['float64', 'int64'] : 选择数值型列
  • enumerate(numeric_cols, 1) : 遍历数值列,从1开始计数

  • plt.subplot(3, 4, i) : 创建3行4列的子图网格

  • sns.boxplot() : 绘制箱线图

    • x=data[col] : 指定绘图数据
  • plt.title(col) : 设置子图标题为列名

  • plt.tight_layout() : 自动调整子图参数

  • plt.show() : 显示图形

  • 功能:可视化数值特征的分布和异常值

5.IQR处理异常值

python
Q1 = data[numeric_cols].quantile(0.25)
Q3 = data[numeric_cols].quantile(0.75)
IQR = Q3 - Q1
data_cleaned = data[~((data[numeric_cols] < (Q1 - 1.5 * IQR)) | (data[numeric_cols] > (Q3 +1.5 * IQR))).any(axis=1)]
  • quantile(0.25)quantile(0.75) : 计算25%和75%分位数
  • IQR = Q3 - Q1: 计算四分位距
  • 异常值判定条件:小于Q1-1.5IQR或大于Q3+1.5IQR
  • any(axis=1) : 检查每行是否有任何列满足条件
  • ~ : 逻辑取反,保留非异常值
  • 功能:基于IQR方法识别并删除异常值

6.处理重复值

python
duplicates = data_cleaned.duplicated()
num_duplicates = duplicates.sum()
data_cleaned = data_cleaned[~duplicates]
print(f'删除的重复行数: {num_duplicates}')
  • data.duplicated() : 标识重复行
  • sum() : 统计重复行数
  • ~duplicates : 保留非重复行
  • 功能:删除完全重复的行并打印删除数量

7.数据归一化

python
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
data_cleaned[numeric_cols] = scaler.fit_transform(data_cleaned[numeric_cols])
  • MinMaxScaler() : 创建最小-最大缩放器
    • 归一化公式:(x - min)/(max - min)
  • fit_transform() : 计算最小/最大值并应用转换
  • 功能:将数值特征缩放到[0,1]范围

8.设定目标变量

python
target_variable = 'SeriousDlqin2yrs'
  • 指定目标变量列名

9.划分特征和目标

python
X = data_cleaned.drop(columns=[target_variable,'Unnamed: 0'])
y = data_cleaned[target_variable]
  • drop() : 删除指定列(目标变量)得到特征矩阵
  • y : 提取目标变量
  • 功能:分离特征(X)和目标(y)

10.划分训练集和测试集

python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print(f'训练数据形状: {X_train.shape}')
print(f'测试数据形状: {X_test.shape}')
  • train_test_split() : 划分数据集
    • test_size=0.2 : 测试集占20%
    • random_state=42 : 随机种子(保证可重复性)
  • shape : 打印数据维度
  • 功能:按80/20比例划分训练/测试集

11.保存清洗后的数据

python
cleaned_file_path = '2.1.3_cleaned_data.csv'
data_cleaned.to_csv(cleaned_file_path, index=False)
  • to_csv() : 保存为CSV文件

    • index=False : 不保存行索引
  • 功能:保存处理后的数据集

制定数据清洗规范

txt
1. 数据加载:使用 pandas 库加载数据集,检查数据的基本结构和类型。
2. 检查数据集中的异常值并处理异常值,使用箱线图检测异常值,使用IQR方法处理异常值;
3. 检查数据集中的重复值并删除所有重复值,并记录删除的行数;
4. 对数据进行归一化处理;
5. 保存清洗后的数据: 将经过清洗和处理后的数据保存为新的 CSV 文件,以便后续使用。

制定特征工程规范

(1)创建新的特征IncomeToDebtRatio,MonthlyIncome,并添加到数据集中;
(2)将SeriousDlqin2yrs设为目标变量并标注;
(3)对数据进行划分;
(4)保存处理后的数据,将经过清洗和处理后的数据保存为新的 CSV 文件。