AI信贷审批系统搭建与调优实战100例 - 第2节
2. 数据清洗与缺失值处理
案例 2:缺失值统计与可视化
目标
识别信贷审批数据中哪些字段存在缺失,以及缺失的严重程度,为后续填充策略提供依据。
关键代码
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)。可视化时建议只绘制有缺失的列,避免图表过于拥挤。