如何标准化 pandas dataframe 中的列


通常,您可能希望标准化pandas DataFrame 中一列或多列的数据值。

本教程解释了执行此操作的两种方法:

1.最小-最大归一化

  • 目的:将每个数据值转换为0到1之间的值。
  • 公式:新值 = (值 – 最小值) / (最大值 – 最小值)

2. 平均归一化

  • 目的:缩放值,使所有值的平均值为 0 和 std。开发人员。是 1。
  • 公式:新值=(值-平均值)/(标准差)

让我们看一个如何在 pandas DataFrame 上使用每种方法的示例。

示例 1:最小-最大归一化

假设我们有以下 pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'points': [25, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 9, 12],
                   'rebounds': [11, 8, 10, 6, 6]}) 

#view DataFrame
print (df)

   points assists rebounds
0 25 5 11
1 12 7 8
2 15 7 10
3 14 9 6
4 19 12 6

我们可以使用以下代码对 DataFrame 的每一列应用最小-最大标准化:

 (df-df. min ())/(df. max ()-df. min ())

        points assists rebounds
0 1.000000 0.000000 1.0
1 0.000000 0.285714 0.4
2 0.230769 0.285714 0.8
3 0.153846 0.571429 0.0
4 0.538462 1.000000 0.0

每列中的最大值现在为1 ,每列中的最小值现在为0 ,所有其他值都在 0 到 1 之间。

示例 2:平均归一化

让我们再次假设我们有以下 pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'points': [25, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 9, 12],
                   'rebounds': [11, 8, 10, 6, 6]}) 

#view DataFrame
print (df)

   points assists rebounds
0 25 5 11
1 12 7 8
2 15 7 10
3 14 9 6
4 19 12 6

我们可以使用以下代码对 DataFrame 中的每一列应用平均标准化:

 (df- df.mean ())/df. std ()

        points assists rebounds
0 1.554057 -1.133893 1.227881
1 -0.971286 -0.377964 -0.087706
2 -0.388514 -0.377964 0.789352
3 -0.582772 0.377964 -0.964764
4 0.388514 1.511858 -0.964764

现在,每列中的值均已标准化,使得每列中的值的平均值为 0,每列中的值的标准差为 1。

如果特定数据点的归一化值大于 0,则表明该数据点大于其列的平均值。相反,小于 0 的标准化值表示数据点低于其列的平均值。

其他资源

Pandas:如何跨多列进行分组和聚合
如何根据多个条件过滤 Pandas DataFrame
如何计算 Pandas DataFrame 中的缺失值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注