提示:前言
Python数据可视化之直方图和密度图
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:以下是本篇文章正文内容,下面案例可供参考
import pandas as pd
pd.plotting.register_matplotlib_converters()
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
print("Setup Complete")
设置headers
# ffmpeg 视频名字 音频名字 输出文件名字 i -cc
headers = {
"referer":"https://www.bilibili.com/",
"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
}
选择数据集
我们将使用包含 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()
假设我们想创建一个直方图来查看鸢尾花的花瓣长度如何变化。 我们可以使用 sns.histplot 命令来做到这一点
# Histogram
sns.histplot(iris_data['Petal Length (cm)'])
在上面的代码单元格中,我们必须为命令提供我们想要绘制的列(在这种情况下,我们选择“花瓣长度(厘米)”)。
下一类型的图是核密度估计 (KDE) 图。 如果您不熟悉 KDE 图,您可以将其视为平滑的直方图。
要制作 KDE 绘图,我们使用 sns.kdeplot 命令。 设置 shade=True 为曲线下方的区域着色(并且 data= 选择我们想要绘制的列)。
# KDE plot
sns.kdeplot(data=iris_data['Petal Length (cm)'], shade=True)
二维 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")
图顶部的曲线是 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(如上所述)为每个物种创建一个 KDE 图。 数据、x 和色调的功能与我们在上面使用 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 versicolor 或 Iris virginica):如果鸢尾花的花瓣长度小于 2厘米,最有可能是山鸢尾
参考链接
https://www.kaggle.com/code/alexisbcook/distributions