EDA新手关于boxplot解读、形态异常及异常值判断的技术咨询
箱线图解读与问题解答
问题背景
我是EDA领域新手,刚成功为数值数据绘制了箱线图,但对其信息解读存在困惑:
箱线图如下:
我想咨询以下问题:
- 查看箱线图时可获取哪些核心信息?
- 为何除age外,其余变量的箱线图无典型箱形结构?
- 如何判断数据是否为异常值?
附所用箱线图绘制代码:
def plot_boxplots_grid(dataframe, n_cols=3, subplot_size=(5, 3)): numerical_cols = [col for col in dataframe.columns if dataframe[col].dtype != 'object' and dataframe[col].nunique() > 2] n_rows = (len(numerical_cols) + n_cols - 1) // n_cols plt.figure(figsize=(subplot_size[0] * n_cols, subplot_size[1] * n_rows)) for i, col in enumerate(numerical_cols): plt.subplot(n_rows, n_cols, i + 1) sns.boxplot(y=dataframe[col]) plt.title(col) plt.tight_layout() plt.show()
1. 箱线图能提供的核心信息
箱线图的核心作用是快速呈现数据的分布特征,核心信息包括:
- 中位数:箱子中间的横线,代表数据的中间位置,一半数据大于它,一半小于它
- 四分位距(IQR):箱子上下边界分别对应上四分位数(Q3,75%的数据小于它)和下四分位数(Q1,25%的数据小于它),箱子高度即IQR,反映数据的集中程度
- 极值范围:箱子上下延伸的须线,通常覆盖Q1-1.5IQR到Q3+1.5IQR区间内的所有数据
- 异常值:须线之外的独立点,代表偏离整体分布的极端数据
2. 除age外其余变量无典型箱形的原因
从图中能看到fnlwgt、capital-gain、capital-loss没有正常箱形,核心原因是数据分布极度倾斜:
capital-gain和capital-loss的大部分数据集中在0附近,只有极少数样本有非零的极端值,导致箱子被压缩成一条线,分布信息被极端值完全拉偏fnlwgt的取值范围极大,且大部分数据集中在左侧小范围区间,同样让箱子被压缩,最终只剩须线和异常点
另外你代码里筛选数值列的条件是nunique()>2,虽能排除二元数值,但这类严重倾斜的分布依然会被选中,导致画出的箱线图没有典型结构。
3. 异常值的判断标准
箱线图里的异常值通常用1.5*IQR规则判定:
- 计算四分位距:IQR = Q3 - Q1(Q3为上四分位数,Q1为下四分位数)
- 确定阈值:下界为Q1 - 1.5IQR,上界为Q3 + 1.5IQR
- 所有小于下界或大于上界的数据点,都会被标记为异常值
这个规则是经验性的,如果你的业务场景有特殊要求,也可以调整倍数(比如用3*IQR定义更极端的异常值)。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

