在本教程中,您将学习所有关于 直方图 和 密度图 。
设置笔记本
像往常一样,我们从设置编码环境开始。(这段代码是隐藏的,但是你可以通过点击右边紧挨着这段文字下面的“代码”按钮来解除隐藏。)
import pandas as pd
pd.plotting.register_matplotlib_converters()
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
print("Setup Complete")
Setup Complete
选择数据集
我们将使用由150种不同的花组成的数据集,其中每种花分别来自三种不同的鸢尾属(Iris setosa,Iris versicolor和Iris virginica),每种50个。
加载和检查数据
数据集中的每一行对应于不同的花。有四个测量值:花萼的长度和宽度,以及花瓣的长度和宽度。我们还跟踪相应的物种。
# Path of the file to read
iris_filepath = "../input/iris.csv"
# Read the file into a variable iris_data
iris_data = pd.read_csv(iris_filepath, index_col="Id")
# Print the first 5 rows of the data
iris_data.head()
Sepal Length (cm) | Sepal Width (cm) | Petal Length (cm) | Petal Width (cm) | Species | |
---|---|---|---|---|---|
Id | |||||
1 | 5.1 | 3.5 | 1.4 | 0.2 | Iris-setosa |
2 | 4.9 | 3.0 | 1.4 | 0.2 | Iris-setosa |
3 | 4.7 | 3.2 | 1.3 | 0.2 | Iris-setosa |
4 | 4.6 | 3.1 | 1.5 | 0.2 | Iris-setosa |
5 | 5.0 | 3.6 | 1.4 | 0.2 | Iris-setosa |
直方图
假设我们想创建一个直方图来观察鸢尾花的花瓣长度是如何变化的。我们可以使用sns.histplot
命令来完成这个操作。
# Histogram
sns.histplot(iris_data['Petal Length (cm)'])
在上面的代码单元格中,我们必须为命令提供想要绘制的列(在本例中,我们选择了'Petal Length (cm)'
)。
密度图
下一种类型的图是 核密度估计(KDE) 图。如果您不熟悉 KDE 图,您可以将其视为平滑的直方图。
要创建 KDE 绘图,我们使用sns.kdeplot
命令。设置shade=True
为曲线下面的区域着色(和 data=
选择我们想要绘制的列)。
# KDE plot
sns.kdeplot(data=iris_data['Petal Length (cm)'], shade=True)
2D KDE图
在创建 KDE 图时,我们不限于单列。我们可以使用 sns.jointplot
命令创建一个 二维(2D) KDE 图 。
在下面的图表中,颜色编码显示了我们看到不同的萼片宽度和花瓣长度组合的可能性,这些组合中较暗的部分更有可能出现。
# 2D KDE plot
sns.jointplot(x=iris_data['Petal Length (cm)'], y=iris_data['Sepal Width (cm)'], kind="kde")
注意,除了中间的2D KDE 图,
- 该图顶部的曲线是 x 轴上数据的 KDE 图(在本例中为
iris_data['Petal Length (cm)']
),以及 - 该图右侧的曲线是 y 轴上数据的 KDE 图(在本例中为
iris_data['Sepal Width (cm)']
)。
颜色编码图表
在本教程的下一部分中,我们将创建图表以了解物种之间的差异。
我们可以使用 sns.histplot
命令( 如上所述 )创建三个不同的直方图(每个物种一个),来显示花瓣长度。
data=
提供了我们用于读取数据的变量名称x=
设置我们要绘制的数据所在的列的名称hue=
设置我们将使用的列以将数据拆分为不同的直方图
# Histograms for each species
sns.histplot(data=iris_data, x='Petal Length (cm)', hue='Species')
# Add title
plt.title("Histogram of Petal Lengths, by Species")
我们还可以使用sns.kdeplot
(as above)为每个物种创建 KDE 图。data
, x
, 和 hue
的功能与上面使用 sns.histplot
时相同。另外,我们设置 shade=True
来给每条曲线下面的区域着色。
# KDE plots for each species
sns.kdeplot(data=iris_data, x='Petal Length (cm)', hue='Species', shade=True)
# Add title
plt.title("Distribution of Petal Lengths, by Species")
在图中可以看到的一个有趣的模式是,这些植物似乎属于两个类别中的一个,在这两个类别中,Iris versicolor 和 Iris virginica 的花瓣长度似乎具有相似的值,而 Iris setosa 则完全属于一个类别。
事实上,根据这个数据集,我们甚至可以通过观察花瓣长度将任何鸢尾属植物分类为 Iris setosa (与 Iris versicolor 或 Iris virginica 相对应) : 如果一朵鸢尾花的花瓣长度小于2厘米,那么它最有可能是 Iris setosa !
标题:Kaggle数据可视化(五)直方图与密度图
作者:Departure
地址:https://www.unreachablecity.club/articles/2023/04/20/1682051162300.html
Comments | 0 条评论