如何标准化 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 中的缺失值