3. 单变量分析:分布、频次与可视化

单变量分析是变量衍生与分箱的起点。在进入任何建模或分箱操作之前,必须彻底理解每个变量的“个体行为”。本章聚焦于连续变量的分布特征、离散变量的频次统计以及对应的可视化方法,为后续的分箱策略提供数据基础。

3.1 连续变量的分布特征

连续变量的分布决定了分箱的密度与边界。核心分析维度包括:

特征维度 描述 对分箱的影响
集中趋势 均值、中位数、众数 判断数据是否对称;偏态分布需在尾部加密分箱
离散程度 标准差、四分位距、极差 离散度大时需更多分箱以捕捉局部模式
偏度与峰度 Skewness、Kurtosis 高偏度提示长尾,分箱边界应覆盖尾部极端值
缺失与异常 缺失率、离群点比例 缺失需单独成箱;异常值需截断或单独分箱
关键指标速查: 对于右偏分布(Skewness > 1),建议在右侧尾部使用更窄的分箱宽度;对于左偏分布(Skewness < -1),左侧尾部同理。峰度 > 3 时,数据存在尖峰厚尾,分箱需兼顾中心密集区与尾部稀疏区。

3.2 离散变量的频次统计

离散变量(包括类别型与有序型)的分析核心是频次与占比。统计内容应覆盖:

  • 绝对频次:每个类别的样本计数。
  • 相对频次:每个类别的样本占比(百分比)。
  • 累积频次:按类别顺序累加,用于观察集中度。
  • 稀有类别检测:频次低于总样本 5% 的类别,通常需要合并或单独处理。
实践建议: 对于高基数离散变量(如城市代码、用户ID),直接频次统计往往产生长尾分布。此时应优先做“频次截断”:将频次低于阈值的类别统一归为“其他”类,再进行后续分箱或编码。

3.3 可视化方法

可视化是单变量分析最直观的呈现方式。不同变量类型对应不同的图表选择:

变量类型 推荐图表 核心观察点
连续变量 直方图、核密度图、箱线图 分布形状、离群点、多峰性
离散变量(低基数) 柱状图、饼图 类别占比、集中度
离散变量(高基数) 帕累托图、频次截断柱状图 长尾分布、头部集中效应

以下 SVG 图展示了连续变量分布分析的完整流程,从原始数据到分箱决策:

连续变量分布分析流程 原始连续变量 描述统计量计算 可视化分布 偏度/峰度判断 异常值检测 缺失分析 分箱策略决策 等距 / 等频 / 最优分箱 / 自定义 说明:分布特征决定分箱边界;偏态、异常、缺失是分箱策略的三大驱动因素

3.4 可视化代码示例

以下 Python 代码展示了连续变量与离散变量的基础可视化方法:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 示例数据
df = pd.DataFrame({
    'age': [25, 32, 47, 51, 36, 29, 44, 38, 55, 62, 28, 33, 41, 48, 53],
    'city': ['A', 'B', 'A', 'C', 'B', 'A', 'C', 'B', 'A', 'C', 'B', 'A', 'C', 'B', 'A']
})

# 连续变量:直方图 + 核密度
fig, axes = plt.subplots(1, 2, figsize=(12, 4))

# 直方图
axes[0].hist(df['age'], bins=8, edgecolor='white', color='#3498db')
axes[0].set_title('Age Distribution (Histogram)')
axes[0].set_xlabel('Age')
axes[0].set_ylabel('Frequency')

# 箱线图
axes[1].boxplot(df['age'], patch_artist=True,
                boxprops=dict(facecolor='#2ecc71'))
axes[1].set_title('Age Distribution (Boxplot)')
axes[1].set_ylabel('Age')

plt.tight_layout()
plt.show()

# 离散变量:频次柱状图
city_counts = df['city'].value_counts()
plt.figure(figsize=(6, 4))
city_counts.plot(kind='bar', color='#9b59b6', edgecolor='white')
plt.title('City Frequency')
plt.xlabel('City')
plt.ylabel('Count')
plt.xticks(rotation=0)
plt.show()
常见陷阱: 直方图的 bin 数量选择不当会掩盖分布细节。建议使用“Sturges 规则”(bin数 = log2(n) + 1)作为初始值,再根据业务含义微调。对于离散变量,避免使用饼图展示超过 5 个类别,否则视觉辨识度急剧下降。

3.5 分布特征与分箱策略对照

根据单变量分析结果,可直接映射到分箱策略:

分布特征 推荐分箱策略 分箱数量参考
近似正态分布 等距分箱 或 等频分箱 5-10 箱
右偏分布(长尾) 对数变换后等距分箱 或 分位数分箱 8-15 箱(尾部加密)
双峰/多峰分布 基于峰谷位置的自定义分箱 峰数 × 2-3 箱
存在明显离群点 截断后等频分箱,离群点单独成箱 6-10 箱 + 离群箱
高缺失率(>20%) 缺失单独成箱,非缺失部分等频分箱 4-8 箱 + 缺失箱

以下 SVG 图展示了离散变量频次统计与分箱决策的对应关系:

离散变量频次统计与分箱决策 原始离散变量频次统计 高频类别(≥5%) 低频类别(<5%) 缺失/未知类别 分箱决策 高频保留原类别 | 低频合并为“其他” | 缺失单独成箱 提示:低频类别合并阈值可根据业务调整,常见阈值为 1%-5%

3.6 单变量分析检查清单

在进入变量衍生与分箱前,建议逐项确认以下检查点:

  1. 连续变量:是否已计算均值、中位数、标准差、偏度、峰度?是否已绘制直方图与箱线图?
  2. 离散变量:是否已统计每个类别的频次与占比?是否已识别稀有类别(频次 < 5%)?
  3. 缺失值:是否已统计缺失率?缺失机制是随机缺失还是非随机缺失?
  4. 异常值:是否已通过 IQR 或 Z-score 方法识别异常值?异常值占比是否超过 1%?
  5. 分布形态:是否存在明显的偏态、多峰或尖峰厚尾特征?
交付物标准: 单变量分析完成后,应输出一份包含“变量名、类型、缺失率、均值/中位数、偏度、峰度、异常值数量、推荐分箱策略”的汇总表。该表将作为后续变量衍生与分箱的输入依据。