箱线图分析

问题描述 投票:0回答:1

我是 EDA 新手,我只是想出了一种方法来查找我的数值数据的

boxplot
,但是,我很难获取它的信息:

箱线图图像:

boxplot image

谁能告诉我:

  1. 看着我能期待什么
    boxplot
  2. 为什么除了年龄之外,它们看起来不像一个盒子?
  3. 我如何判断它是否是异常值。

顺便说一句,这是我使用的箱线图代码:

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()
python boxplot eda
1个回答
0
投票

1.当我查看箱线图时,我能期待什么?

这篇文章很好地解释了箱线图并引导您完成计算。简而言之:

箱须图(也称为箱线图)显示一组数据的五数摘要。五数汇总是最小值、第一四分位数、中位数、第三四分位数和最大值。

箱线图还将显示异常值,具体取决于您如何定义这些值。异常值通常是大于/小于 1.5 x IQR 的数据点,其中 IQR 代表四分位数范围 (Q3 - Q1)。然而,这只是一个标准。

2.为什么它们看起来不像一个盒子?

这是因为其他变量的数据集中有很多异常值 - 异常值由菱形标记表示。 Seaborn 正在显示所有数据,因此大量异常值将框区域“挤压”到非常小的高度。尝试在定义箱线图的行中设置

showfliers=False
,这应该删除异常值。执行此操作后,您应该会看到更标准的箱线图。

但是,对于您拥有的所有异常值,箱线图似乎“不是”显示数据的正确选择,并且通过删除异常值,您隐藏了重要的数据点并扭曲了结果。我建议使用小提琴图,我发现它在视觉上更具吸引力,您也可以用小提琴绘制箱形图。 Seaborn 有一个 seaborn.violinplot() 方法,您可以使用与

seaborn.boxplot()
非常相似的输入。
3.如何判断是否异常?

使用seaborn时,标准是用菱形标记显示异常值。在这篇

post

中,seaborn 看起来使用标准 1.5 x IQR:

通过测试,seaborn 使用whis=1.5 作为默认值。

其中
whis

sns.boxplot()
方法的可选参数:
whis : float, optional
    Proportion of the IQR past the low and high quartiles to extend the plot whiskers.
    Points outside this range will be identified as outliers.

© www.soinside.com 2019 - 2024. All rights reserved.