直方图能为我们提供频率分布的详细视图,而箱线图(也称为箱须图)则能简洁概括数值变量的分布情况,侧重于其集中趋势、离散程度和潜在异常值。它们在快速比较不同类别间的分布时特别有效,尽管此处我们将侧重于单变量情况,并基于之前讨论的集中趋势和离散程度的原则。箱线图展现了以下重要统计量:中位数 (Q2): 箱体内的线表示数据的中位数或第50百分位数($Q_2$)。一半的数据点低于此值,一半高于此值。四分位距 (IQR): 箱体本身涵盖了从第一四分位数(Q1,第25百分位数)到第三四分位数(Q3,第75百分位数)的范围。因此,箱体的长度代表了IQR($IQR = Q3 - Q1$),它衡量了数据中间50%的离散程度。更宽的箱体表明数据中心部分的变异性更大。须线: 从箱体延伸出的线(须线)表明数据的范围,不包括异常值。通常,须线延伸到箱体边缘 $1.5 \times IQR$ 范围内的最小值和最大值(即 $Q1 - 1.5 \times IQR$ 和 $Q3 + 1.5 \times IQR$)。此范围之外的点被视为潜在异常值。异常值: 绘制在须线之外的单个点被标记为潜在异常值。这种可视化识别是IQR规则的直接应用,我们将在后续作为异常值检测的统计方法进一步讨论。箱线图非常适合快速了解以下内容:中心位置: 中位数所在的位置。离散程度: 数据离散的程度(通过IQR和须线长度体现)。偏度: 分布的不对称性。如果中位数更接近Q1,则分布可能右偏。如果更接近Q3,则可能左偏。类似地,不等长的须线也能表明尾部的偏度。异常值: 异常远离数据主体的数据点。使用 Seaborn 创建箱线图Seaborn 提供了一个简单的函数 sns.boxplot() 来创建信息丰富的箱线图。它与 Pandas DataFrames 很好地集成。import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import numpy as np # 示例 DataFrame(假设您已加载了一个,例如 'df') # 让我们创建一些示例数据进行演示 np.random.seed(42) data = { 'Age': np.random.normal(loc=40, scale=10, size=150).astype(int), 'Salary': np.random.lognormal(mean=np.log(50000), sigma=0.4, size=150) } # 引入一些异常值 data['Salary'][10] = 180000 data['Salary'][50] = 195000 data['Age'][20] = 85 df = pd.DataFrame(data) df['Age'] = df['Age'].clip(18, 85) # 确保年龄合理 # 为 'Salary' 列创建箱线图 plt.figure(figsize=(6, 4)) # 控制图表大小 sns.boxplot(y=df['Salary'], color='#74c0fc') # 使用调色板中的蓝色 plt.title('薪资分布') plt.ylabel('薪资') plt.grid(axis='y', linestyle='--', alpha=0.7) # 添加水平网格线 plt.show() # 为 'Age' 列创建箱线图 plt.figure(figsize=(6, 4)) sns.boxplot(y=df['Age'], color='#69db7c') # 使用绿色 plt.title('年龄分布') plt.ylabel('年龄') plt.grid(axis='y', linestyle='--', alpha=0.7) plt.show() 执行此代码将生成 'Salary' 和 'Age' 列的箱线图。Image 15 Image 16解读箱线图观察 'Salary' 列生成的图表:箱体内的线显示中位薪资。箱体显示中间50%的薪资落入的范围(Q1到Q3)。须线延伸覆盖大部分数据范围,通常在箱体边缘 $1.5 \times IQR$ 之内。单独绘制在上方须线之上的点代表潜在的高薪异常值。在我们的合成数据中,我们手动设置为180,000和195,000的值应显示为异常值。类似地,分析 'Age' 图表以理解其分布、中位数、离散程度和任何潜在异常值。这里是使用 Plotly 呈现 'Salary' 数据的示例:{"layout": {"title": "薪资分布概览", "yaxis": {"title": "薪资"}, "xaxis": {"showticklabels": false}, "height": 400, "width": 350, "showlegend": false}, "data": [{"type": "box", "y": [49870.4, 62031.6, 45270.9, 38988.0, 48848.8, 57798.3, 37607.2, 47988.7, 51428.0, 43154.9, 180000.0, 53340.1, 44108.9, 65399.4, 33283.3, 42001.8, 55968.7, 40648.6, 58221.9, 68613.4, 39968.7, 47055.7, 42668.5, 75199.5, 50838.9, 31115.6, 49518.5, 60726.4, 51662.3, 36370.0, 48493.3, 53215.3, 41739.1, 50687.8, 47334.0, 63794.2, 35588.0, 51804.3, 44911.7, 59194.3, 40590.0, 46617.0, 49272.1, 37893.2, 61404.0, 43773.4, 52688.5, 41257.9, 57058.9, 38288.7, 195000.0, 45945.3, 54112.9, 48030.8, 50247.1, 39455.0, 66507.7, 46218.4, 53771.1, 43003.1], "name": "薪资", "boxpoints": "outliers", "marker": {"color": "#f06595"}, "line": {"color": "#495057"}}]}箱线图概括了薪资分布,突出显示了中位数、IQR(箱体)、典型范围(须线)和潜在异常值(单个点)。箱线图提供了一种紧凑而有效的方式来掌握数值变量分布的基本特征,是单变量分析工具集中必不可少的一部分。它们基于IQR规则视觉上标记潜在异常值,补充了接下来讨论的统计方法。