4. 数据来源与探索:公开信用数据集介绍、数据加载、数据概览、缺失值初步分析
在构建信用评分卡模型时,数据是模型性能的基石。本章将引导你熟悉公开信用数据集的结构,掌握数据加载与初步探索的方法,并完成缺失值的初步诊断。这些步骤是后续特征工程与模型开发的前提。
4.1 公开信用数据集介绍
学术界与工业界常用的公开信用数据集主要包括以下几种,它们各自具有不同的样本量与特征构成,适用于模型开发的初期验证。
| 数据集名称 | 样本量 | 特征数量 | 目标变量 | 适用场景 |
|---|---|---|---|---|
| German Credit | 1,000 | 20 | 好/坏客户 | 二分类模型入门 |
| Give Me Some Credit | 150,000 | 11 | 违约/非违约 | 大规模样本训练 |
| Lending Club | 数百万 | 100+ | 贷款状态 | 复杂特征工程 |
| Home Credit Default Risk | 300,000+ | 多表关联 | 违约概率 | 多源数据融合 |
实战建议: 本课程后续案例将主要使用 Give Me Some Credit 数据集,因其样本量适中、特征清晰,且缺失值模式具有代表性,非常适合演示 Champion 模型的完整开发流程。
4.2 数据加载与初步概览
数据加载是数据探索的第一步。我们使用 Python 的 pandas 库完成数据读取,并通过几个关键方法快速了解数据全貌。
import pandas as pd
import numpy as np
# 加载数据集
df = pd.read_csv('credit_data.csv')
# 查看数据维度
print(f"数据集形状: {df.shape}")
# 查看前5行数据
print(df.head())
# 查看字段信息与数据类型
print(df.info())
执行上述代码后,我们通常关注以下信息:
- 样本量与特征数:确认数据规模是否符合预期。
- 字段名称与类型:区分数值型、类别型与时间型字段。
- 内存占用:评估是否需要优化数据类型以提升处理效率。
关键指标: 在
df.info() 的输出中,重点关注 Non-Null Count 列,它直接反映了每个字段的完整程度,是后续缺失值分析的起点。
4.3 缺失值初步分析
缺失值是信用数据中的常见问题,可能源于客户未填写、系统记录失败或数据合并时的遗漏。我们需要系统性地统计缺失情况,并判断其模式。
4.3.1 缺失值统计
# 计算每个字段的缺失值数量与比例
missing_count = df.isnull().sum()
missing_ratio = df.isnull().sum() / len(df)
# 合并为DataFrame
missing_df = pd.DataFrame({
'缺失数量': missing_count,
'缺失比例': missing_ratio
}).sort_values(by='缺失比例', ascending=False)
print(missing_df[missing_df['缺失数量'] > 0])
通过上述统计,我们可以快速定位缺失严重的字段。通常,缺失比例超过 50% 的字段需要谨慎处理,可能直接删除或进行深度分析。
4.3.2 缺失模式可视化
为了直观理解缺失值的分布模式,我们使用 missingno 库进行可视化分析。以下 SVG 图展示了缺失值在样本中的分布情况。
4.3.3 缺失机制分类
理解缺失机制有助于选择合适的填补策略。根据统计学习理论,缺失机制可分为三类:
| 缺失机制 | 定义 | 示例 | 处理策略 |
|---|---|---|---|
| 完全随机缺失 (MCAR) | 缺失与否完全独立于数据 | 系统随机丢包 | 直接删除或均值填补 |
| 随机缺失 (MAR) | 缺失依赖于其他观测变量 | 高收入者更少填写收入 | 回归填补或模型预测 |
| 非随机缺失 (MNAR) | 缺失依赖于缺失值本身 | 违约客户故意隐瞒信息 | 需业务知识辅助建模 |
注意: 在信用评分场景中,缺失值往往不是完全随机的。例如,收入字段的缺失可能与客户还款能力相关,直接删除可能导致样本选择偏差。建议在初步分析后,结合业务逻辑判断缺失机制,再决定填补或删除策略。
4.4 数据探索流程总结
以下 SVG 图总结了从数据加载到缺失值分析的完整流程,帮助你建立系统性的探索框架。
通过以上步骤,你已经完成了对公开信用数据集的初步探索。接下来,我们将基于这些发现,进入特征工程与模型构建阶段。