Часто вам может понадобиться нормализовать значения данных одного или нескольких столбцов в кадре данных 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