首页 > 解决方案 > 从 Seaborn 配对图中获取数据数组

问题描述

我使用了 seaborn pairplot 函数并想提取一个数据数组。

import seaborn as sns

iris = sns.load_dataset("iris")
sns.pairplot(iris, hue="species")

我想得到一个我在下面以黑色显示的点的数组:

在此处输入图像描述

谢谢。

标签: pythonpython-3.xseabornkdekernel-density

解决方案


就这一行:

data = iris[iris['species'] == 'setosa']['sepal_length']

你对蓝线感兴趣,所以是'setosa'scpecie。为了过滤iris数据框,我创建了这个过滤器:

iris['species'] == 'setosa'

这是一个布尔数组,如果数据帧的列中True的对应行是 ,则其值为,否则。使用这行代码:'species'iris'setosa'False

iris[iris['species'] == 'setosa']

我将过滤器应用于数据框,以便仅提取与该物种相关联的行'setosa'。最后,我提取'sepal_length'列:

iris[iris['species'] == 'setosa']['sepal_length']

如果我使用以下代码为此数据数组绘制 KDE:

data = iris[iris['species'] == 'setosa']['sepal_length']
sns.kdeplot(data)

我得到:

在此处输入图像描述

那就是你感兴趣的上面的情节

通过计算 KDE 的方式,这些值与上图不同。
我引用这个参考

密度图中的 y 轴是核密度估计的概率密度函数。但是,我们需要小心地指定这是概率密度而不是概率。不同之处在于概率密度是 x 轴上每单位的概率。要转换为实际概率,我们需要在 x 轴上找到特定区间的曲线下面积。有点令人困惑,因为这是概率密度而不是概率,所以 y 轴可以取大于 1 的值。密度图的唯一要求是曲线下的总面积积分为 1。我通常倾向于将密度图上的 y 轴视为仅用于不同类别之间的相对比较的值。


推荐阅读