直方图 Histogram
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset("tips")
sns.histplot(data=df, x="total_bill")
plt.show()
- 集中区间
- 分布形状
- 是否右偏 / 左偏
调整分箱(bins)
sns.histplot(data=df, x="total_bill", bins=20)
plt.show()
- bins 太少 → 模糊
- bins 太多 → 噪音
KDE:平滑后的分布
sns.kdeplot(data=df, x="total_bill")
plt.show()
KDE 是:
- 概率密度估计
- 「趋势版」直方图
Histogram + KDE(最常用)
sns.histplot(data=df, x="total_bill", kde=True)
plt.show()
分组分布
不同性别的账单分布
sns.histplot(
data=df,
x="total_bill",
hue="sex",
kde=True
)
plt.show()
- 谁的消费更分散?
- 是否重叠?
箱型图 Boxplot
- 中位数在哪?
- 分布范围?
- 有没有异常值?
sns.boxplot(data=df, x="day", y="total_bill")
plt.show()
Boxplot 能告诉你:
- 中位数(不是平均)
- 四分位数
- 离群点(outliers)
小提琴图 Violin Plot
sns.violinplot(data=df, x="day", y="total_bill")
plt.show()
Violin = Boxplot + KDE
适合:
- 对比分布形状
- 学术 / 报告展示
加分组(hue)
sns.violinplot(
data=df,
x="day",
y="total_bill",
hue="sex",
split=True
)
plt.show()
split=True = 左右对比
四种分布图怎么选?
| 场景 | 推荐 |
|---|---|
| 看整体分布 | hist / kde |
| 比较群体 | box / violin |
| 找异常 | boxplot |
| 看形状 | violin |