plt.figure(figsize=(10,6))
sns.histplot(data=df, x='MEDV')
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()技术支持
此命令将显示 MEDV 列的直方图。
以下是上述代码生成的图表:
这是展示波士顿数据集中房价中位数(MEDV)分布的直方图。它直观呈现了自有住房中位数的频数分布。
增强您的 Seaborn 直方图
调整箱的大小与数量
调整箱的数量有助于更好地理解分布。箱数越多,细节越丰富;箱数较少则可使可视化更简洁。
要增加箱的数量,可以修改 bins 参数。
示例如下:
plt.figure(figsize=(10,6))
sns.histplot(data=df, x='MEDV', bins=30)
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()技术支持
plt.figure(figsize=(10,6))
sns.histplot(data=df, x='MEDV', color='purple')
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()技术支持
添加核密度估计(KDE)
KDE 可提供对数据分布的平滑估计,尤其有助于识别数据中的模式。
它会生成一条平滑曲线,帮助您把握整体趋势。
要实现这一点,我们在函数中使用 kde 参数:
plt.figure(figsize=(10,6))
sns.histplot(data=df, x='MEDV', kde=True)
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()技术支持
plt.figure(figsize=(10,6))
sns.histplot(data=df, x='MEDV', hue='CHAS')
plt.title('Distribution of Median Housing Prices in Boston')
plt.xlabel('Median Value of Owner-Occupied Homes (in $1000)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()技术支持
数据可视化是解读复杂数据集的关键环节。
在 Python 编程领域,Seaborn 以其强大的功能脱颖而出,能够创建美观且信息丰富的统计图形,如直方图和折线图。
它构建在 Matplotlib 之上,增强了接口并提供了更多数据可视化选项,尤其适用于统计分析。Seaborn 与 Pandas DataFrame 的无缝集成,使其深受数据科学家和分析师的青睐。
在这份详细指南中,我们将专注于 Seaborn 中最常用的图之一——直方图。
sns.histplot函数概览Seaborn 中的
sns.histplot函数用于绘制直方图,这是检查连续型数据分布的基本工具。该函数功能多样,支持广泛的自定义,便于从数据中提炼有意义的洞见。该函数是 Seaborn 库众多函数之一。请查看下方速查表以快速了解。
数据科学中的 Seaborn 速查表 - 来源
环境准备
导入必要的库
在开始数据可视化之前,我们需要设置环境。这包括导入必要的库,重点是 Seaborn。通常将 Seaborn 以
sns的别名导入,便于使用。除了 Seaborn,常用的基础库还包括用于数值计算的 NumPy、用于数据处理的 pandas,以及用于进一步定制的 Matplotlib。
这些都是必备库,提供了在 Python 中创建和操作数据可视化所需的工具。它们是数据分析师和数据科学家最常用的库。
如果您刚开始学习 Python,建议试试我们的《数据科学入门:Python》课程。若想进一步学习 pandas、NumPy 和 Matplotlib,可以参考我们的《使用 pandas 进行数据处理》、《NumPy 入门》和《Matplotlib 数据可视化入门》课程。
准备数据
我们将使用 Scikit-Learn 可加载的波士顿房价数据集。该数据集提供了波士顿不同区域的房屋价值以及若干属性,如犯罪率、平均房间数等。
是否具备适合的直方图数据至关重要。在这里,我们使用的是连续变量——波士顿自有住房的房价中位数(MEDV)。
由于直方图通常展示单个变量的分布,我们将从 DataFrame 中选择一列。
初识 Scikit-Learn?可以尝试我们的《Python 机器学习》教程。如需更多信息,我们的《使用 scikit-learn 的监督学习》课程将帮助您打好基础。
构建您的第一个 Seaborn 直方图
在开始之前,请先确认以下基本前提:
我们将先了解
sns.histplot函数的一些常用语法和参数。语法与参数
使用
sns.histplot创建直方图的基本语法非常直观。关键参数包括:
data:数据集,通常为 Pandas DataFrame。x:要绘制直方图的变量。color:设置柱形的颜色。alpha:设置柱形的透明度。bins:使用的箱(柱组)数量。binwidth:每个箱的宽度。kde:布尔值,是否添加核密度估计曲线。hue:基于另一个变量区分数据子集。该函数可接受许多参数和参数值,但我们将聚焦于适用于本数据集的部分。
创建一个简单直方图
我们先创建一个基础直方图来可视化房价中位数(MEDV)的分布。
此命令将显示 MEDV 列的直方图。
以下是上述代码生成的图表:
这是展示波士顿数据集中房价中位数(MEDV)分布的直方图。它直观呈现了自有住房中位数的频数分布。
增强您的 Seaborn 直方图
调整箱的大小与数量
调整箱的数量有助于更好地理解分布。箱数越多,细节越丰富;箱数较少则可使可视化更简洁。
要增加箱的数量,可以修改 bins 参数。
示例如下:
正如上面的 Seaborn 直方图所示,柱形数量已增加到我们设置的 30 个。这样可以更细致地钻取数据,实现更高的粒度。
美化图表
通过自定义诸如柱形颜色与透明度等美观属性,可以让直方图更具信息性且更美观。
在下面的示例中,我用紫色替代了默认颜色,重绘了最初的直方图。
以下是我用于生成上图的代码。
添加核密度估计(KDE)
KDE 可提供对数据分布的平滑估计,尤其有助于识别数据中的模式。
它会生成一条平滑曲线,帮助您把握整体趋势。
要实现这一点,我们在函数中使用
kde参数:如下所示,这将为直方图叠加一条优雅的曲线。
添加核密度估计(KDE)曲线可对分布给出更平滑的估计。
高级直方图技巧
多变量直方图
通过 hue 参数,可以在同一个直方图中对不同类别进行比较。
该参数允许我们在同一张直方图中区分不同类别,从而直观比较各自的分布。
简而言之,它从 DataFrame 中取一个分类型列,并用不同颜色区分数据。
例如,若我们的 DataFrame 中有名为“CHAS”的列,指示房屋是否临近查尔斯河(1 表示是,0 表示否),我们就可以使用“hue”参数来比较临河与非临河房屋的房价中位数分布。
代码如下:
这将生成一个直方图,其中沿查尔斯河(CHAS=1)与不沿河(CHAS=0)的住房
MEDV分布以不同颜色区分。Seaborn 直方图最佳实践
在构建 Seaborn 直方图时,有几项需要注意的要点如下:
1. 选择合适的箱数
选择合适的箱数是创建信息量充足直方图的关键。箱数越多,细节越丰富,但也可能导致过拟合并误导对数据的理解。
相反,箱数过少又可能过度简化分布。
一种经验方法是使用 Scott 法则(Scott's Rule)来选择合适的箱宽。该法则根据数据点数量计算理想的箱宽。
2. 在细节与清晰度之间取得平衡
在直方图中提供足够细节固然重要,但同样需要确保可视化清晰且易于解读。
加入过多元素,例如 KDE 曲线或过多颜色,可能会导致视觉杂乱、难以理解。
最好在信息量与简洁性之间找到平衡。
3. 考虑数据类型
所可视化的数据类型也会影响直方图参数的选择。
例如,连续变量与分类变量相比,需要不同的箱宽设置。
创建直方图时务必考虑数据的性质,以确保准确呈现其分布。
当然,Seaborn 只是 Python 数据可视化库之一。若您更偏好,也可以选择在 Matplotlib 中创建直方图。
结语
Seaborn 是一个强大的 Python 可视化库,
histplot函数可轻松创建直方图。只需调整函数中的参数,您就能改变图表的呈现效果,以实现所需的细节与美观度。请记住上述 Seaborn 直方图技巧:始终考虑数据类型、选择合适的箱宽,并在细节与清晰度之间取得平衡。
想进一步了解 Seaborn 及其强大的数据可视化能力?我们的《Seaborn 数据可视化入门》课程非常适合初学者。