Как стандартизировать данные в Python (с примерами)


Стандартизировать набор данных означает масштабировать все значения в наборе данных таким образом, чтобы среднее значение равнялось 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
Стандартизация и нормализация: в чем разница?

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