📜  标准化 pandas 中的列 - Python (1)

📅  最后修改于: 2023-12-03 14:55:37.936000             🧑  作者: Mango

标准化 Pandas 中的列 - Python

在 Pandas 中,我们有时需要将列数据标准化为相同的尺度。标准化是将数据缩放到相同的范围(例如,将数据缩放到 [0,1] 或 [-1,1] 之间)的过程。这对于深度学习等机器学习模型特别有用,因为模型训练需要相同范围的数据。

本文将介绍如何使用 Python 和 Pandas 标准化 Pandas 中的列。

首先,让我们导入 Pandas。

import pandas as pd

接下来,我们将创建一个简单的数据帧,其中包含三列数据("Age"、"Height" 和 "Income")。

data = {'Age': [25, 30, 35, 40, 45],
        'Height': [170, 175, 180, 185, 190],
        'Income': [35000, 50000, 75000, 100000, 150000]}

df = pd.DataFrame(data)

我们得到的数据帧如下所示:

| | Age | Height | Income | |---:|------:|---------:|---------:| | 0 | 25 | 170 | 35000 | | 1 | 30 | 175 | 50000 | | 2 | 35 | 180 | 75000 | | 3 | 40 | 185 | 100000 | | 4 | 45 | 190 | 150000 |

我们现在将使用 Pandas 的 min()max() 函数将每列数据缩放到 [0,1] 范围内。具体方法是将每列中的最小值减去该列的最小值,并将该列的最大值减去该列的最小值。然后将该列的每个值除以该列的范围(即,最大值减去最小值)。

df_scaled = df.apply(lambda x: (x - x.min()) / (x.max() - x.min()))

print(df_scaled)

我们得到的标准化数据帧如下所示:

| | Age | Height | Income | |---:|----------:|---------:|---------:| | 0 | 0 | 0 | 0 | | 1 | 0.333333 | 0.333333 | 0.285714 | | 2 | 0.666667 | 0.666667 | 0.642857 | | 3 | 1 | 1 | 1 | | 4 | 1 | 1 | 1 |

我们可以看到,每列中的数据都已缩放到 [0,1] 范围内。

除了将数据缩放到 [0,1] 范围内,我们还可以将其缩放到 [-1,1] 范围内,这对于某些模型也很有用。方法是将每列数据减去该列的平均值,然后将结果除以该列的标准偏差。

df_std = df.apply(lambda x: (x - x.mean()) / x.std())

print(df_std)

我们得到的标准化数据帧如下所示:

| | Age | Height | Income | |---:|----------:|---------:|---------:| | 0 | -1.41421 | -1.41421 | -1.22474 | | 1 | -0.707107 | -0.707107 | -0.408248 | | 2 | 0 | 0 | 0.816497 | | 3 | 0.707107 | 0.707107 | 1.63299 | | 4 | 1.41421 | 1.41421 | 2.44949 |

我们可以看到,每列中的数据都已缩放到 [-1,1] 范围内。

到此为止,我们已经介绍了如何在 Pandas 中标准化数据列。这对于机器学习和深度学习等应用程序特别有用。