AI信贷审批系统搭建与调优实战100例 - 第2节

2. 数据清洗与缺失值处理

案例 2:缺失值统计与可视化

信贷审批数据缺失值统计与可视化观测点 展示原始数据表、缺失值统计结果以及柱状图可视化之间的映射关系 原始数据 (df) Loan_ID | Age | Income LP001 | 45 | 58000 LP002 | NaN | 72000 LP003 | 32 | NaN LP004 | 28 | 61000 LP005 | NaN | NaN ... (614 行) 缺失统计 df.isnull().sum() Loan_ID 0 Age 12 Income 14 Credit_Sc 25 dtype: int64 缺失率 = 缺失数/总行数 缺失值柱状图 10 20 0 12 Age 14 Income 25 Credit_Sc 缺失数量

目标

识别信贷审批数据中哪些字段存在缺失,以及缺失的严重程度,为后续填充策略提供依据。

关键代码

import pandas as pd
import matplotlib.pyplot as plt

# 加载数据(示例路径)
df = pd.read_csv('loan_approval.csv')

# 1. 缺失值统计(数量)
missing_count = df.isnull().sum()
print("缺失值数量:\n", missing_count)

# 2. 缺失率(相对比例)
missing_rate = (df.isnull().sum() / len(df)) * 100
print("\n缺失率(%):\n", missing_rate.round(2))

# 3. 筛选有缺失的列(便于可视化)
missing_cols = missing_count[missing_count > 0].index.tolist()
print("\n存在缺失的列:", missing_cols)

# 4. 柱状图可视化(缺失数量)
plt.figure(figsize=(8, 4))
plt.bar(missing_cols, missing_count[missing_cols], color='#3b82f6')
plt.title('Missing Values by Column (Loan Approval Data)')
plt.xlabel('Column')
plt.ylabel('Count')
plt.xticks(rotation=45)
plt.grid(axis='y', linestyle='--', alpha=0.6)
plt.tight_layout()
plt.show()

验证路径与预期现象

  • 控制台输出:isnull().sum() 会打印每列的缺失数量,例如 Age 12、Income 14、Credit_Score 25。
  • 缺失率:若总行数 614,则 Age 缺失率约 1.95%,Income 约 2.28%,Credit_Score 约 4.07%。
  • 柱状图:应显示三个柱子,高度分别对应缺失数量,Credit_Score 柱子最高(红色高亮),直观反映该字段缺失最严重。
  • 可迁移性:将 df 替换为任何 DataFrame,即可快速得到缺失概况,适用于建模前的数据质量检查。

要点说明

本案例聚焦于“识别缺失”这一单一任务。使用 isnull() 配合 sum() 获得列级缺失计数,再通过 matplotlib 柱状图将数值转化为视觉信号。注意:isnull() 返回布尔型 DataFrame,sum() 默认按列求和(axis=0)。若需查看行级缺失,可使用 df.isnull().any(axis=1)。可视化时建议只绘制有缺失的列,避免图表过于拥挤。