sns.boxplot()
—— 箱线图(Box Plot)
seaborn.boxplot()
用于 可视化数据的分布和统计特征,可以显示 中位数、四分位数、异常值,适用于 数据分析(EDA)和异常值检测。
1. 语法
import seaborn as sns
sns.boxplot(data=None, x=None, y=None, hue=None, order=None, palette=None, orient=None, width=0.8)
主要参数
参数 | 作用 |
---|---|
data | DataFrame 数据集 |
x | 分类变量 |
y | 数值变量 |
hue | 按类别分色 |
order | 自定义类别顺序 |
palette | 颜色方案(如 "Blues" 、"pastel" ) |
orient | 'v' 竖向(默认) 或 'h' 横向 |
width | 控制箱子的宽度(默认 0.8 ) |
2. 什么是箱线图?
箱线图(Box Plot) 展示 数据的分布情况,包含:
- 中位数(Median):箱子中间的横线。
- 第一四分位数(Q1, 25%):箱子的底部。
- 第三四分位数(Q3, 75%):箱子的顶部。
- 异常值(Outliers):超出
1.5 * IQR
的点(IQR = Q3 - Q1)。
3. 基本示例
3.1 绘制箱线图
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据
data = sns.load_dataset("titanic")
# 绘制箱线图
sns.boxplot(data=data, x="class", y="age")
plt.title("Age Distribution by Class")
plt.show()
📌 说明
x="class"
→ 分类变量(头等舱/二等舱/三等舱)。y="age"
→ 显示年龄的分布。
3.2 按类别显示(hue
参数)
sns.boxplot(data=data, x="class", y="age", hue="sex")
plt.show()
📌 作用
hue="sex"
→ 不同性别用不同颜色表示。
4. 进阶用法
4.1 横向箱线图(orient="h"
)
sns.boxplot(data=data, x="age", y="class", orient="h")
plt.show()
📌 作用
orient="h"
→ 横向箱线图(适用于类别较长时)。
4.2 自定义类别顺序(order
参数)
order = ["Third", "Second", "First"]
sns.boxplot(data=data, x="class", y="age", order=order)
plt.show()
📌 作用
order=["Third", "Second", "First"]
指定类别顺序。
4.3 设置颜色(palette
)
sns.boxplot(data=data, x="class", y="age", hue="sex", palette="pastel")
plt.show()
📌 可选调色板
"pastel"
、"Blues"
、"coolwarm"
、"magma"
。
5. sns.boxplot()
vs sns.violinplot()
sns.boxplot() | sns.violinplot() | |
---|---|---|
作用 | 显示中位数、四分位数、异常值 | 显示数据分布密度 |
适用场景 | 异常值检测 | 观察数据分布 |
是否有密度信息 | ❌ 没有 | ✅ 有 |
sns.violinplot(data=data, x="class", y="age", hue="sex", split=True)
plt.show()
6. 总结
✅ sns.boxplot()
适用于数据分布可视化、异常值检测。
✅ 常见参数
hue
按类别分色,palette
控制颜色,order
自定义类别顺序。orient="h"
横向箱线图,width=0.6
调整箱子宽度。