3. 原始申请数据加载与初步探查

原始申请数据加载与初步探查 学习卡片

任务说明

本案例用 pandas 读取一份申请数据 CSV,完成四件事:查看数据形状、字段类型、各字段缺失值比例、标签分布。这是评分卡建模前的第一步探查,用于确认数据规模、字段可用性和正负样本是否失衡。

环境与数据

依赖:Python 3.8+、pandas。安装命令:

pip install pandas

数据文件 application.csv 放在脚本同目录,含字段:id、age、income、education、label。其中 label 为标签列(1 表示违约,0 表示正常),income 与 education 故意留有空值以演示缺失值统计。

完整代码

import pandas as pd

DATA_PATH = "application.csv"
LABEL_COL = "label"

def load_data(path):
    """读取申请数据,返回 DataFrame。"""
    return pd.read_csv(path)

def explore(df, label_col):
    """输出形状、字段类型、缺失值比例、标签分布。"""
    print("=== 数据形状 ===")
    print(f"行数: {df.shape[0]}, 列数: {df.shape[1]}")

    print("\n=== 字段类型 ===")
    print(df.dtypes)

    print("\n=== 缺失值比例 ===")
    missing_ratio = df.isnull().mean().sort_values(ascending=False)
    print((missing_ratio * 100).round(2).astype(str) + " %")

    print("\n=== 标签分布 ===")
    counts = df[label_col].value_counts().sort_index()
    ratio = df[label_col].value_counts(normalize=True).sort_index()
    dist = pd.DataFrame({"count": counts, "ratio": (ratio * 100).round(2)})
    print(dist)

if __name__ == "__main__":
    df = load_data(DATA_PATH)
    explore(df, LABEL_COL)

运行方式

python explore.py

验证方法与通过条件

运行后应依次看到四段输出:

  • 数据形状:行数与列数与 CSV 实际一致;
  • 字段类型:id、age、income 为数值型,education 为 object,label 为整数型;
  • 缺失值比例:income、education 比例大于 0,其余为 0;
  • 标签分布:同时给出 0/1 的样本数与占比,两者占比之和为 100%。

若四段输出齐全且数值与数据文件一致,即判定通过。若某字段缺失比例异常高(如超过 50%),需在后续建模中重点处理。