箱型图主要用来观察数据的整体分布。
箱型图的解释:
如下图所示,箱型图可以看出一个数据集的上限,上四分位数,中位数,下四分位数,下限以及异常点。
- 中位数即数据集处于中间的点;
- 上四分位数就是75%分位数或四分之三分位数
;
- 下四分位数就是25%分位数或四分之一分位数
;
- 上限的计算公式为
(上限=上四分位数 + 1.5*(上四分位数--四分位数))
- 上限的计算公式为
(上限=下四分位数 - 1.5*(上四分位数--四分位数))
- 异常点即为上下限之外的点
四分位距 (IQR) 通过将数据集划分为四分位数来实现。四分位数将一个按等级排序的数据集划分为四个相等的部分。即 Q1(第 1 个四分位数)、Q2(第 2 个四分位数)和 Q3(第 3 个四分位数)。IQR 定义为 Q3–Q1,位于 Q3+1.5IQR 或 Q1-1.5IQR 之外的数据被视为异常点。
代码实现
绘制一个箱型图
fig = plt.figure(figsize=(4, 6)) # 指定绘图对象宽度和高度
sns.boxplot(data_train['V0'],orient="v", width=0.5)
plt.show()
参数解释
- x,y:指定的x轴, y轴数据,可以是向量或者字符串,当是字符串时,一定是data中的一个key
- hue:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key),seaborn将根据这一列设置不同颜色
- data:绘图数据,可以是pandas.DataFrame,numpy.ndarray或者字典等
- order:包含所有分组属性的列表,用于指定条形顺序,注意如果某个分组不在order中,该分组将不会显示
- hue_order:字符串组成的list,设置hue后设置各颜色顺序
- orient:当x,y都是离散型或者数值型数据时,通过orient可设置图像方向
- color:统一设置所有箱体的颜色
- palette:颜色面板
- saturation:颜色饱和度
- width:设置箱体宽度
- dodge:是否重叠绘制(设置hue之后生效)
- fliersize:箱体上方离群点的大小
- linewidth:箱体边框线的粗细
- whis:确定离群值的上下界(IQR超过低和高四分位数的比例),此范围之外的点将被识别为异常值。IQR指的是上下四分位的差值。
绘制多个箱型图
def plot_box(data):
column = data_train.columns.tolist()[:data.shape[1]]
fig, ax = plt.subplots(figsize=(20, 40))
for i in range(38):
plt.subplot(13, 3, i + 1)
sns.boxplot(data[column[i]], orient="h", width=0.5)
plt.ylabel(column[i], fontsize=8)
plt.show()
plot_box(data_train)