Python Pandas – 使用Seaborn绘制小提琴图、控制顺序并显示观察值

Python Pandas – 使用Seaborn绘制小提琴图、控制顺序并显示观察值

当你需要探索一个数据集里多种类别之间的分布时,小提琴图可以帮助你展示数据的密度和分布状态等信息。Seaborn是一个基于matplotlib库的数据可视化包,它提供了多种可以快速绘制数据图形的方法,其中包括小提琴图。在本文中,我们将学习如何使用Python Pandas和Seaborn绘制小提琴图,并控制顺序和可视化观察值。

1. 导入所需库

在开始之前,我们需要先安装并导入所需的Python库,包括Pandas、numpy、matplotlib以及Seaborn。以下是安装和导入这些库的代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

值得注意的是,Seaborn绘图需要将图形嵌入到Jupyter Notebook中,需要在代码的开头处添加 %matplotlib inline

2. 准备数据集

在本文中,我们将使用Iris数据集(鸢尾花数据集)来绘制小提琴图。该数据集包含150个样本数据,涵盖了三种不同的鸢尾属植物:山鸢尾、变色鸢尾和维吉尼亚鸢尾,每种花卉样本数据有4个特征,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。

我们可以使用Pandas的read_csv()方法读取Iris数据集,代码如下:

iris = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class'])

iris.head()

这里我们以下载链接作为数据集读取路径,并未将数据集下载到本地。

3. 绘制小提琴图

我们将使用Seaborn的violinplot()函数来绘制小提琴图。以下是绘制鸢尾花花萼长度小提琴图的代码:

sns.violinplot(x='class', y='sepal_length', data=iris)
plt.title('Iris Dataset - Sepal Length by Species')

这个小提琴图是按Iris数据集的三种花卉品类(class列)展示的不同sepal长度(sepal_length列)之间的分布状态,并做了品类的标注和图标标题。

Seaborn的小提琴图默认会展示所有数据,包括可见值和观察值(即箱端点和奇异点)。如果我们想只展示可见值,可以将inner参数设置为boxstick。以下是展示花瓣长度(petal_length列)小提琴图的代码,在此我们只展示箱端点,不展示观察值:

sns.violinplot(x='class', y='petal_length', data=iris, inner='box')
plt.title('Iris Dataset - Petal Length by Species')

4. 调整顺序

在绘制小提琴图时,Seaborn默认会按照数据集中第一列(即分类变量)的顺序进行排序。如果我们想对x轴的品种类别进行排序,可以通过order参数控制。以下代码将x轴品种类别按山鸢尾、变色鸢尾、维吉尼亚鸢尾的顺序进行排列:

sns.violinplot(x='class',y='sepal_length', order=['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'], data=iris)
plt.title('Iris Dataset - Sepal Length by Species (Ordered)')

5. 显示观察值

在小提琴图中,我们可以使用stripplot()函数以散点图的形式来展示观察值。以下是绘制花瓣宽度(petal_width列)小提琴图,并展示观察值的代码:

sns.violinplot(x='class', y='petal_width', data=iris)
sns.stripplot(x='class', y='petal_width', data=iris, jitter=True, color='black', size=4)
plt.title('Iris Dataset - Petal Width by Species with Observations')

我们可以看到,小提琴图中的每个观察值都用散点图的形式绘制出来了。

结论

在本文中,我们学习了如何使用Python Pandas和Seaborn绘制小提琴图,并控制顺序和可视化观察值。 使用Seaborn的violinplot()函数可以对比三种品类下的单个变量的数据分布状态;使用inner参数可以控制展示核密度函数、箱线图或无;使用order参数可以控制x轴品类类别的顺序;使用stripplot()函数可以在小提琴图中展示观察值。这些可视化方法可以帮助我们更好地探索数据集中的变量之间的关系。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程