Как нормализовать столбцы в Pandas DataFrame


Часто вам может понадобиться нормализовать значения данных одного или нескольких столбцов в кадре данных pandas.

В этом руководстве объясняются два способа сделать это:

1. Мин-макс нормализация

  • Цель: Преобразует каждое значение данных в значение от 0 до 1.
  • Формула: Новое значение = (значение – мин.) / (макс. – мин.)

2. Средняя нормализация

  • Цель: Масштабирует значения таким образом, чтобы среднее значение всех значений было равно 0 и станд. разв. 1.
  • Формула: Новое значение = (значение – среднее значение) / (стандартное отклонение)

Давайте рассмотрим пример использования каждого метода в кадре данных pandas.

Пример 1: Мин-макс нормализация

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
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:

import pandas as pd

#create DataFrame
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 по нескольким условиям
Как подсчитать пропущенные значения в Pandas DataFrame