Стандартизировать набор данных означает масштабировать все значения в наборе данных таким образом, чтобы среднее значение равнялось 0, а стандартное отклонение равнялось 1.
Мы используем следующую формулу для стандартизации значений в наборе данных:
х новый = (х я - х ) / с
куда:
- x i : i -е значение в наборе данных
- x : Среднее значение выборки
- s : Стандартное отклонение выборки
Мы можем использовать следующий синтаксис, чтобы быстро стандартизировать все столбцы кадра данных pandas в Python:
(df-df.mean ())/df.std()
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1: стандартизируйте все столбцы DataFrame
В следующем коде показано, как стандартизировать все столбцы в кадре данных pandas:
import pandas as pd
#create data frame
df = pd.DataFrame({'y': [8, 12, 15, 14, 19, 23, 25, 29],
'x1': [5, 7, 7, 9, 12, 9, 9, 4],
'x2': [11, 8, 10, 6, 6, 5, 9, 12],
'x3': [2, 2, 3, 2, 5, 5, 7, 9]})
#view data frame
df
y x1 x2 x3
0 8 5 11 2
1 12 7 8 2
2 15 7 10 3
3 14 9 6 2
4 19 12 6 5
5 23 9 5 5
6 25 9 9 7
7 29 4 12 9
#standardize the values in each column
df_new = (df-df.mean ())/df.std()
#view new data frame
df_new
y x1 x2 x3
0 -1.418032 -1.078639 1.025393 -0.908151
1 -0.857822 -0.294174 -0.146485 -0.908151
2 -0.437664 -0.294174 0.634767 -0.525772
3 -0.577717 0.490290 -0.927736 -0.908151
4 0.122546 1.666987 -0.927736 0.238987
5 0.682756 0.490290 -1.318362 0.238987
6 0.962861 0.490290 0.244141 1.003746
7 1.523071 -1.470871 1.416019 1.768505
Мы можем убедиться, что среднее значение и стандартное отклонение каждого столбца равны 0 и 1 соответственно:
#view mean of each column
df_new.mean()
y 0.000000e+00
x1 2.775558e-17
x2 -4.163336e-17
x3 5.551115e-17
dtype: float64
#view standard deviation of each column
df_new. std()
y 1.0
x1 1.0
x2 1.0
x3 1.0
dtype: float64
Пример 2. Стандартизация определенных столбцов DataFrame
Иногда вам может понадобиться стандартизировать только определенные столбцы в DataFrame.
Например, для многих алгоритмов машинного обучения вам может потребоваться только стандартизировать переменные-предикторы, прежде чем подгонять определенную модель к данным.
В следующем коде показано, как стандартизировать определенные столбцы в кадре данных pandas:
import pandas as pd
#create data frame
df = pd.DataFrame({'y': [8, 12, 15, 14, 19, 23, 25, 29],
'x1': [5, 7, 7, 9, 12, 9, 9, 4],
'x2': [11, 8, 10, 6, 6, 5, 9, 12],
'x3': [2, 2, 3, 2, 5, 5, 7, 9]})
#view data frame
df
y x1 x2 x3
0 8 5 11 2
1 12 7 8 2
2 15 7 10 3
3 14 9 6 2
4 19 12 6 5
5 23 9 5 5
6 25 9 9 7
7 29 4 12 9
#define predictor variable columns
df_x = df[['x1', 'x2', 'x3']]
#standardize the values for each predictor variable
df[['x1', 'x2', 'x3']] = (df_x-df_x.mean())/df_x. std()
#view new data frame
df
y x1 x2 x3
0 8 -1.078639 1.025393 -0.908151
1 12 -0.294174 -0.146485 -0.908151
2 15 -0.294174 0.634767 -0.525772
3 14 0.490290 -0.927736 -0.908151
4 19 1.666987 -0.927736 0.238987
5 23 0.490290 -1.318362 0.238987
6 25 0.490290 0.244141 1.003746
7 29 -1.470871 1.416019 1.768505
Обратите внимание, что столбец «y» остается неизменным, но столбцы «x1», «x2» и «x3» стандартизированы.
Мы можем убедиться, что среднее значение и стандартное отклонение каждого столбца переменной предиктора равны 0 и 1 соответственно:
#view mean of each predictor variable column
df[['x1', 'x2', 'x3']].mean()
x1 2.775558e-17
x2 -4.163336e-17
x3 5.551115e-17
dtype: float64
#view standard deviation of each predictor variable column
df[['x1', 'x2', 'x3']]. std()
x1 1.0
x2 1.0
x3 1.0
dtype: float64
Дополнительные ресурсы
Как нормализовать столбцы в Pandas DataFrame
Как удалить выбросы в Python
Стандартизация и нормализация: в чем разница?