如何缩放 Pandas DataFrame 列?

2025年1月5日 | 阅读 5 分钟

Pandas 提供了一个灵活的 DataFrame 结构,用于管理和分析表格数据,并且是一个强大的 Python 数据处理包。缩放是指将 DataFrame 中的数值转换为标准刻度,这是数据分析和机器学习研究中常见的预处理步骤。缩放是必要的,因为这样可以使各种特征对分析的贡献均等,并避免某些变量因量级较大而主导分析。

本文将简要介绍缩放 Pandas DataFrame 列的不同方法。

什么是缩放?

缩放是将不同尺度上的离散值对齐的过程。在一个具有不同列尺度的数据集中查找模式会使数据分析更具挑战性。它显示了数据集中值尺度的差异。因此,必须对数据值进行缩放。

为什么我们需要缩放?

在处理显示巨大重要版本的数值统计数据时,缩放很重要。例如,如果一个 DataFrame 包含年龄和收入等特征,其中年龄范围为 25 到 70,而收入范围为 20,000 到 80,000,那么该版本可能会因为收入的较大值而分配更大的权重。通过实现每个特征对版本的影响均衡,缩放有助于提高稳健性和准确性。

此外,缩放还有助于基于距离的机器学习算法(如支持向量机和 k-近邻)的高效计算。然而,缩放差异可能导致错误的结果。

缩放有助于轻松地比较具有相似尺度的特征。它有助于更好地评估和建模相似数量级数据的训练,并消除主导分析的不必要特征。

缩放 Pandas DataFrame 列的不同方法

缩放 Pandas DataFrame 列有不同的方法。包括:

  • Min-Max 缩放
  • 标准化缩放
  • 鲁棒缩放
  • 对数变换缩放

1. Min-Max 缩放

Min-Max 缩放是缩放 DataFrame 列的技术中最常用的技术之一。此技术通过重塑每个列的值,将其映射到 0 到 1 之间的范围。或者,换句话说,每个列的最大值变为 1,最小值为 0。这种重塑值以确保不同列中的值都在同一尺度上的方法也称为归一化。Min-Max 缩放公式如下:

How to Scale Pandas DataFrame Columns

语法

以下是一个展示 Min-Max 缩放实现的示例:

输出

Original DataFrame:
   Name  Quantity
0  Cherry     35000
1  Orange    85000
2  Banana    65000
3  Apple     70000
4  Grapes    98000

Resultant DataFrame (after Min-Max Scaling):
    Name  Quantity
0  Cherry  0.000000
1  Orange  0.793651
2  Banana  0.476190
3  Apple   0.555556
4  Grapes  1.000000

2. 标准化缩放

一种称为标准化缩放的数据变换方法,它将值修改为均值为零,标准差为一。当数据遵循正态分布时,此方法效果极佳。此外,大规模缩放可以有效处理异常值,并且对异常值具有鲁棒性。这是一种通用且广泛采用的数据预处理技术,可提高各种机器学习算法的性能。通用缩放公式如下:

How to Scale Pandas DataFrame Columns

语法

它使用均值 (mean( )) 和标准差 (std( )) 函数来缩放数据值。

以下示例展示了标准化缩放的用法:

输出

Original DataFrame:
    Name    Quantity
0  Cherry     35000
1  Orange     85000
2  Banana     65000
3  Apple      70000
4  Grapes     98000

Resultant DataFrame (after Standard Scaling):
   Name   Quantity
0  Cherry -1.498632
1  Orange  0.606188
2  Banana -0.235740
3  Apple  -0.025258
4  Grapes  1.153441

3. 鲁棒缩放

这是一种快速有效的方法来缩放数据框的列。它类似于标准化缩放策略,不同之处在于它不使用均值和标准差来修改数据,而是使用四分位距 (IQR) 和中位数。当存在可能扭曲传统缩放程序结果的统计异常值时,此策略可能非常有用。鲁棒缩放公式如下:

How to Scale Pandas DataFrame Columns

语法

以下代码是一个简单易懂的鲁棒缩放示例:

输出

Original DataFrame:
     Name  Quantity
0  Cherry     35000
1  Orange     85000
2  Banana     65000
3  Apple     70000
4  Grapes     98000

Resultant DataFrame (after Robust Scaling):
     Name  Quantity
0  Cherry       7.0
1  Orange      -3.0
2  Banana       1.0
3   Apple      -0.0
4  Grapes      -5.6

4. 对数变换缩放

可以使用对数特征来缩放非线性数据框列。当处理偏斜的数据分布,特别是具有幂律分布的数据分布时,对数变换非常有用。通过使用对数变换,可以更紧密地缩放数据,以表示变量之间的底层关系。包括科学和金融在内的众多行业都使用此技术来最大化信息分析和建模。

语法

提供的代码是理解 Python 中对数变换缩放的最佳示例:

输出

Original DataFrame:
     Name  Quantity
0  Cherry     35000
1  Orange     85000
2  Banana     65000
3  Apple      70000
4  Grapes     98000

Resultant DataFrame (after Log Transformation Scaling):
     Name   Quantity
0  Cherry  10.463103
1  Orange  11.350407
2  Banana  11.082143
3  Apple   11.156251
4  Grapes  11.492723

结论

预处理数据的一个关键步骤是缩放 DataFrame 列,以便每个数值特征都能在分析中做出同等贡献。Pandas 提供了一个灵活的平台来实施这些策略,允许用户从自定义方法、鲁棒缩放、标准化缩放、Min-Max 缩放和对数变换中进行选择。选择最能满足您的建模需求和数据分布需求的缩放策略,以提高数据分析的准确性和可靠性。