如何在 Python 中规范化直方图?

2025年3月5日 | 阅读 4 分钟

在接下来的教程中,我们将学习如何在 Python 编程语言中规范化直方图。但在开始之前,让我们先简要了解一下直方图的含义、一些特性以及在 Python 中的实现方法。

什么是直方图?

直方图是一种图表,它使用给定变量的数值分布作为一系列条形来绘制。每个条形通常覆盖一个数值范围,称为“bin”或“class”。条形的高度表示与相关 bin 中的数据点值对应的频率。

直方图的一些特性

直方图的一些特性如下:

  • Bin(条柱): Bin 是 x 轴上的划分,代表数据值的分层。
  • Frequency(频率): 频率是落入每个 bin 的数据点的数量。
  • Bars(条形): 矩形条形,其高度代表每个 bin 中数据点的频率。
  • X 轴: 图表的 X 轴代表统计值的范围。
  • Y 轴: 图表的 Y 轴代表每个 bin 中统计因子的频率。
  • Distribution(分布): 分布提供了统计数据分布的视觉表示。
  • Skewness(偏度): 直方图的偏度表明记录是偏向左侧还是右侧。
  • Central Tendency(集中趋势): 集中趋势可以帮助发现数据的关键趋势,包括均值或中位数。
  • Outliers(异常值): 异常值有时可以被识别为远离直方图主要数据点的独立数据点。
  • Normalization(规范化): 直方图可以被规范化,以显示相对频率而不是绝对频率。
  • Bimodal or Multimodal Distributions(双峰或多峰分布): 直方图中多个峰值表示数据中存在多个模式。
  • Area Under Curve(曲线下的面积): 直方图曲线下的面积代表数据点的总数量。

在 Python 中绘制直方图

在 Python 中,我们可以借助 Matplotlib 或 Seaborn 等不同库来绘制直方图。Matplotlib 是一个广泛使用的绘图库,它提供了创建多种类型图表的功能,包括直方图。

示例

输出

How to Normalize a Histogram in Python?

在 Python 中规范化直方图

在 Python 中规范化直方图包括缩放频率值,使得直方图曲线下的总面积之和至少为一。这允许您可视化数据点的相对频率,而不是它们的绝对计数。有不同的方法可以规范化直方图,包括将频率除以数据点的总数,或者缩放直方图使得曲线下的面积等于 1。

以下是一些可用于在 Python 中规范化直方图的方法:

方法 1:将频率除以总计数

在这种方法中,每个频率值都除以统计数据的总数。

示例

输出

How to Normalize a Histogram in Python?

方法 2:缩放直方图

在这种技术中,直方图被缩放,使得曲线下的面积等于 1。

示例

输出

How to Normalize a Histogram in Python?

理解规范化直方图的优缺点

规范化的优点

以下是规范化直方图的一些优点:

  1. 标准化: 规范化直方图允许在不同数据集之间进行标准化,从而简化比较。
  2. 相对比较: 它允许更清晰地可视化相对频率而不是绝对计数,有助于数据解释。
  3. 一致性: 规范化确保直方图曲线下的总面积之和至少为一,为可视化提供一致性。
  4. 易于解释: 在比较具有不同样本大小或测量单位的数据集时,规范化直方图更容易解释。
  5. 关注分布: 它强调分布形状而不是值的绝对重要性,有助于分析底层模式。

规范化的缺点

以下是规范化直方图的一些缺点:

  1. 信息丢失: 规范化可能会导致关于数据点绝对频率的信息丢失,这在某些情况下可能很重要。
  2. 误解: 如果理解不当,规范化直方图可能导致误解,尤其是在比较具有不同样本大小的数据集时。
  3. 解释难度: 一些读者难以理解 y 轴(它代表规范化频率还是密度),主要是由于误解。
  4. 依赖于 Bin 宽度: 规范化的结果也可能取决于 Bin 宽度的选择,这可能会影响数据的可视化表示。
  5. 复杂性: 规范化直方图会增加可视化过程的复杂性,需要额外的步骤,并可能使某些用户的解释复杂化。

结论

在接下来的教程中,我们学习了直方图。我们还学习了使用 Matplotlib 库在 Python 中绘制直方图的方法。然后我们讨论了规范化直方图的不同方法。最后,我们看了一些规范化的优缺点。