3. 数据基础:信贷评分卡数据简介

3.1 信贷评分卡数据概述

信贷评分卡是金融风控领域最经典、最成熟的量化决策工具之一。它通过历史借贷数据,将借款人的违约风险映射为一个可比较的分数,从而辅助信贷审批、额度管理和定价决策。在《额度定价漂移检测》课程中,我们使用的底层数据正是来源于这类评分卡系统。

评分卡数据通常包含三类核心信息:

  • 申请信息:借款人提交的个人资料,如年龄、收入、职业、居住地等。
  • 信用历史:征信报告中的过往借贷记录、还款行为、逾期情况等。
  • 行为数据:在贷后管理过程中产生的动态行为,如消费习惯、还款方式变化等。
课程数据说明: 本章使用的数据集为脱敏后的模拟评分卡数据,保留了真实业务场景中的变量分布特征,但不包含任何真实个人隐私信息。数据仅用于教学演示额度定价漂移检测方法。

3.2 特征变量与目标变量

在建模和漂移检测任务中,我们需要明确区分两类变量:

变量类型 变量名称 含义说明 数据类型
特征变量 age 借款人年龄(岁) 数值型
特征变量 income 年收入(万元) 数值型
特征变量 credit_score 外部征信评分(300-850) 数值型
特征变量 loan_amount 申请贷款金额(万元) 数值型
特征变量 loan_term 贷款期限(月) 数值型
特征变量 debt_ratio 负债收入比 数值型
特征变量 employment_years 工作年限(年) 数值型
特征变量 home_ownership 房产拥有状态(自有/按揭/租房) 类别型
特征变量 purpose 贷款用途(教育/医疗/消费等) 类别型
目标变量 default_flag 是否违约(1=违约,0=正常) 二分类
目标变量 pricing_rate 实际定价利率(%) 数值型
关键理解: 在额度定价漂移检测中,default_flag 用于评估风险模型的表现漂移,pricing_rate 用于监控定价策略的偏移。两者共同构成了漂移检测的双重目标。

3.3 数据加载与初步探索

我们使用 Python 的 pandas 库加载数据,并进行三个维度的初步探索:shape(数据形状)、info(数据类型与缺失值)、describe(统计描述)。

3.3.1 加载数据

import pandas as pd

# 加载评分卡数据
df = pd.read_csv('credit_scoring_data.csv')

# 查看数据形状
print("数据形状(行数, 列数):", df.shape)

输出示例:

数据形状(行数, 列数): (50000, 11)

数据集包含 50,000 条样本记录,11 个字段(9 个特征变量 + 2 个目标变量)。

3.3.2 数据类型与缺失值检查

# 查看数据类型和缺失值情况
df.info()

输出示例:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 50000 entries, 0 to 49999
Data columns (total 11 columns):
 #   Column            Non-Null Count  Dtype  
---  ------            --------------  -----  
 0   age               50000 non-null  int64  
 1   income            50000 non-null  float64
 2   credit_score      49850 non-null  float64
 3   loan_amount       50000 non-null  float64
 4   loan_term         50000 non-null  int64  
 5   debt_ratio        49720 non-null  float64
 6   employment_years  50000 non-null  int64  
 7   home_ownership    50000 non-null  object 
 8   purpose           50000 non-null  object 
 9   default_flag      50000 non-null  int64  
 10  pricing_rate      50000 non-null  float64
dtypes: float64(5), int64(4), object(2)
memory usage: 4.2 MB
注意缺失值: credit_score 和 debt_ratio 存在少量缺失值(分别缺失 150 条和 280 条),在后续漂移检测前需要进行处理。缺失比例均低于 1%,对整体分布影响有限。

3.3.3 统计描述

# 查看数值型变量的统计描述
df.describe()

输出示例:

              age        income  credit_score  loan_amount   loan_term  debt_ratio  employment_years  default_flag  pricing_rate
count  50000.000  50000.00000   49850.00000  50000.000000  50000.0000  49720.00000       50000.00000  50000.000000  50000.000000
mean      35.420     12.35000     680.50000     15.200000     36.5000      0.35000           5.80000      0.120000      8.750000
std       10.150      8.20000      85.30000     12.800000     12.2000      0.18000           4.30000      0.325000      3.200000
min       18.000      2.00000     350.00000      1.000000     12.0000      0.02000           0.00000      0.000000      3.500000
25%       27.000      6.50000     620.00000      5.000000     24.0000      0.21000           2.00000      0.000000      6.500000
50%       33.000     10.80000     690.00000     11.000000     36.0000      0.32000           5.00000      0.000000      8.200000
75%       42.000     16.20000     750.00000     22.000000     48.0000      0.46000           8.00000      0.000000     10.500000
max       75.000     55.00000     850.00000     60.000000     72.0000      0.95000          20.00000      1.000000     18.000000

从统计描述中可以快速获取关键信息:

  • 违约率:default_flag 均值为 0.12,即整体违约率约 12%。
  • 定价利率:pricing_rate 均值 8.75%,范围从 3.5% 到 18%。
  • 年龄分布:借款人年龄集中在 27-42 岁,符合信贷业务主流客群特征。
  • 收入分布:年收入中位数 10.8 万元,75% 分位数为 16.2 万元,存在右偏分布。

3.4 数据探索流程总览

下图展示了从原始数据加载到初步探索的完整流程:

数据加载与初步探索流程 数据加载与初步探索流程 1. 数据加载 2. shape 查看 3. info 检查 4. describe 统计 5. 结果解读 shape 查看数据规模 → info 检查类型与缺失 → describe 获取分布统计 → 综合解读数据质量

3.5 数据探索要点总结

通过上述三个步骤,我们完成了对评分卡数据的初步认知:

探索步骤 核心输出 业务意义
shape 样本量 50,000,特征 11 个 数据量充足,适合进行分布漂移检测
info 2 个字段存在缺失值 需在预处理阶段处理缺失,避免漂移检测偏差
describe 违约率 12%,利率范围 3.5%-18% 为后续漂移阈值设定提供基准参考
下一步准备: 在完成数据加载与初步探索后,我们将进入数据预处理阶段,包括缺失值处理、异常值检测、特征编码等,为后续的漂移检测模型构建打好基础。