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 图展示了缺失值在样本中的分布情况。

缺失值分布矩阵(示意) 字段A 字段B 字段C 字段D 字段E 说明:蓝色区域表示数据存在,白色间隙表示缺失。 字段B和字段D的缺失模式较为集中,可能存在系统性缺失。

4.3.3 缺失机制分类

理解缺失机制有助于选择合适的填补策略。根据统计学习理论,缺失机制可分为三类:

缺失机制 定义 示例 处理策略
完全随机缺失 (MCAR) 缺失与否完全独立于数据 系统随机丢包 直接删除或均值填补
随机缺失 (MAR) 缺失依赖于其他观测变量 高收入者更少填写收入 回归填补或模型预测
非随机缺失 (MNAR) 缺失依赖于缺失值本身 违约客户故意隐瞒信息 需业务知识辅助建模
注意: 在信用评分场景中,缺失值往往不是完全随机的。例如,收入字段的缺失可能与客户还款能力相关,直接删除可能导致样本选择偏差。建议在初步分析后,结合业务逻辑判断缺失机制,再决定填补或删除策略。

4.4 数据探索流程总结

以下 SVG 图总结了从数据加载到缺失值分析的完整流程,帮助你建立系统性的探索框架。

数据探索与缺失值分析流程 数据加载 数据概览 缺失值统计 缺失模式分析 流程输出:缺失字段清单、缺失比例、缺失模式矩阵,为特征工程提供输入。

通过以上步骤,你已经完成了对公开信用数据集的初步探索。接下来,我们将基于这些发现,进入特征工程与模型构建阶段。