📅  最后修改于: 2023-12-03 14:55:37.936000             🧑  作者: Mango
在 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 中标准化数据列。这对于机器学习和深度学习等应用程序特别有用。