掌握数据可视化:使用Python中的Seaborn理解箱线图和小提琴图
数据可视化是有效数据分析的基石,使数据科学家和分析师能够发现数据集中的模式、趋势和异常值。在众多可用的可视化工具中,箱线图和小提琴图对于总结分布和比较不同类别的数据至关重要。在这篇综合指南中,我们将深入探讨使用Python的Seaborn库这两种强大的可视化技术,并利用经典的鸢尾花(Iris)数据集进行实际演示。
—
目录
—
数据可视化简介
数据可视化将原始数据转化为图形表示,使复杂数据更易于访问和理解。有效的可视化可以揭示在表格数据中可能被忽视的模式、相关性和异常。 在各种可视化技术中,箱线图和小提琴图因其能够简洁地总结分布特征并促进不同类别或组之间的比较而脱颖而出。
—
理解鸢尾花数据集
在深入研究我们的可视化技术之前,熟悉我们将使用的数据集至关重要:鸢尾花数据集。该数据集在机器学习和统计学领域是一个典范,为分类任务提供了经典示例。
鸢尾花数据集概述
- 特征:
- 花萼长度:花萼的长度,单位为厘米。
- 花萼宽度:花萼的宽度,单位为厘米。
- 花瓣长度:花瓣的长度,单位为厘米。
- 花瓣宽度:花瓣的宽度,单位为厘米。
- 类别:鸢尾花的类别(Iris-setosa,Iris-versicolor,Iris-virginica)。
- 用途:该数据集主要用于测试分类算法,目标是根据花的测量值预测其类别。
—
箱线图:全面指南
什么是箱线图?
箱线图,也称为须图,是一种基于五数概括的标准化数据分布显示方式:
- 最小值:最小的数据点。
- 第一四分位数 (Q1):数据集下半部分的中位数。
- 中位数 (Q2):数据集的中间值。
- 第三四分位数 (Q3):数据集上半部分的中位数。
- 最大值:最大的数据显示点。
此外,箱线图通常会突出显示异常值,即显著偏离整体数据模式的数据点。
使用Seaborn创建箱线图
Seaborn是基于Matplotlib的Python数据可视化库,提供了创建箱线图的简洁接口。以下是使用鸢尾花数据集的分步指南。
步骤 1:导入必要的库
1 2 3 4 5 |
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set() |
步骤 2:加载鸢尾花数据集
1 2 3 |
names = ['sepal_length','sepal_width','petal_length','petal_width','class'] iris = pd.read_csv('iris.data', names=names) iris.head() |
输出:
1 2 3 4 5 6 |
sepal_length sepal_width petal_length petal_width class 0 5.1 3.5 1.4 0.2 Iris-setosa 1 4.9 3.0 1.4 0.2 Iris-setosa 2 4.7 3.2 1.3 0.2 Iris-setosa 3 4.6 3.1 1.5 0.2 Iris-setosa 4 5.0 3.6 1.4 0.2 Iris-setosa |
步骤 3:生成箱线图
1 2 |
sns.boxplot(data=iris, x='petal_length', y='class') plt.show() |
输出:

解释箱线图
理解箱线图的组成部分对于有效的数据解释至关重要:
- 箱体:代表四分位距(IQR),从Q1到Q3(第25到75百分位),包含数据的中间50%。
- 中位线:箱体内的一条线表示数据的中位数(Q2)。
- 须:从箱体延伸出的线,分别指向离下四分位数和上四分位数1.5 * IQR范围内的最小值和最大值。
- 异常值:位于须以外的数据点,通常以单独的点或小圆点表示。
在鸢尾花数据集的箱线图中:
- 类别:图比较了三种鸢尾花(Setosa,Versicolor,Virginica)的花瓣长度。
- 分布:
- Iris-setosa 显示出紧密的分布,变化最小。
- Iris-versicolor和Iris-virginica显示出重叠的范围,这表明仅基于花瓣长度进行分类可能存在挑战。
- 异常值:识别出显著偏离其他数据点的点,可能需要进一步调查或处理。
处理箱线图中的异常值
异常值可能会显著影响机器学习模型的性能。以下是处理它们的方法:
- 识别:箱线图直观地突出显示异常值,使得发现异常更为容易。
- 分析:确定异常值是真实的数据点还是错误。
- 处理:
- 移除:如果异常值被认为是错误或不相关的,可以将其排除。
- 转换:应用转换以减少异常值的影响。
- 保留:如果异常值提供了有关数据分布的有价值信息,则保留它们。
示例决策规则:
- 靠近须的异常值簇:考虑保留,因为它们可能代表自然的变异。
- 孤立的异常值:如果可能会扭曲分析,考虑将其移除。
—
小提琴图:增强数据分布洞察
什么是小提琴图?
小提琴图结合了箱线图和核密度图的特征,提供了更详细的数据分布视图。它展示了不同值的数据概率密度,从而更深入地理解分布的形状。
使用Seaborn创建小提琴图
使用相同的鸢尾花数据集,让我们创建一个小提琴图。
步骤 1:生成小提琴图
1 2 3 4 |
sns.violinplot(data=iris, x='petal_length', y='class') fig = plt.gcf() fig.set_size_inches(10, 10) plt.show() |
输出:

解释小提琴图
小提琴图提供了多种洞察:
- 密度估计:小提琴在不同值处的宽度表示数据的密度,突出显示观察值较多的区域。
- 箱线图元素:许多小提琴图在密度图中结合了传统的箱线图元素(中位数,四分位数)。
- 对称性:形状指示数据分布是否对称或偏斜。
- 多模态:小提琴图中的峰值可以指示多模态分布。
在鸢尾花数据集的小提琴图中:
- 物种比较:该图提供了不同物种间花瓣长度分布的更清晰视图。
- 密度峰值:密度的峰值可以表示常见的花瓣长度值。
- 偏斜性:不对称的形状表示各类别内分布的偏斜。
比较箱线图和小提琴图
虽然两种图表都很有价值,但它们的用途略有不同:
- 箱线图:
- 使用四分位数和中位数提供简洁的摘要。
- 有效地突出显示异常值。
- 适用于快速比较不同类别。
- 小提琴图:
- 通过密度估计提供数据分布的详细视图。
- 揭示多峰分布和偏斜性。
- 在理解底层分布形状至关重要时非常有用。
选择它们之间:
- 当需要简洁性且异常值信息至关重要时,使用箱线图。
- 当数据分布的形状对分析至关重要时,选择小提琴图。
—
实际应用:Jupyter Notebook演练
对于动手实践者,在Jupyter Notebook中实现这些可视化有助于实验和迭代分析。以下是前面步骤的简要版本。
步骤 1:设置和数据加载
1 2 3 4 5 6 7 8 9 10 |
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set() # Load Iris dataset names = ['sepal_length','sepal_width','petal_length','petal_width','class'] iris = pd.read_csv('iris.data', names=names) iris.head() |
步骤 2:生成箱线图
1 2 |
sns.boxplot(data=iris, x='petal_length', y='class') plt.show() |
步骤 3:生成小提琴图
1 2 3 4 |
sns.violinplot(data=iris, x='petal_length', y='class') fig = plt.gcf() fig.set_size_inches(10, 10) plt.show() |
注意:使用fig.set_size_inches(width, height)
根据需要调整图形大小,以确保清晰和可读性。
—
数据分析中的使用案例
了解何时以及如何使用箱线图和小提琴图可以显著提升数据分析工作流程:
- 特征比较:比较不同类别中数值特征的分布,以识别模式或异常。
- 异常检测:快速发现可能需要进一步调查或清理的异常值。
- 模型准备:通过理解数据分布和方差来指导特征选择和工程。
- 探索性数据分析 (EDA):获取有关数据结构、集中趋势和离散度的初步见解。
示例:在客户细分中,箱线图可以比较不同人口统计组的消费习惯,而小提琴图可以揭示分布的细微差别,例如某些组的消费行为是否具有更大的变异性。
—
结论
箱线图和小提琴图是数据可视化工具库中不可或缺的工具,提供了数据分布的独特而互补的视图。通过使用Seaborn在Python中掌握这些图表,数据分析师和科学家可以有效地总结数据、检测异常值,并深入理解底层模式。无论是为机器学习模型准备数据还是进行深入的探索性分析,这些可视化技术都提供了做出明智决策所需的清晰性和精确性。
—
附加资源
- Seaborn文档:https://seaborn.pydata.org/
- Matplotlib文档:https://matplotlib.org/stable/contents.html
- Pandas文档:https://pandas.pydata.org/docs/
- Kaggle的鸢尾花数据集:https://www.kaggle.com/uciml/iris
- Jake VanderPlas的Python数据科学手册
- Ritchie S. King的Seaborn实战数据可视化
—
通过将箱线图和小提琴图纳入您的数据分析工作流程,您可以提升解释复杂数据集的能力,从而实现更准确的模型和更有洞察力的结论。祝您分析愉快!