Как нормализовать столбцы в 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.