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


Центрировать набор данных означает вычесть среднее значение из каждого отдельного наблюдения в наборе данных.

После центрирования набора данных среднее значение набора данных становится равным нулю.

В следующих примерах показано, как центрировать данные в Python.

Пример 1. Центрирование значений массива NumPy

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

import numpy as np

#create NumPy array
data = np.array([4, 6, 9, 13, 14, 17, 18, 19, 19, 21])

#display mean of array
print(data.mean())

14.0

Мы можем определить функцию для вычитания среднего значения массива из каждого отдельного наблюдения:

#create function to center data
center_function = lambda x: x - x.mean()

#apply function to original NumPy array
data_centered = center_function(data)

#view updated Array
print(data_centered)

array([-10., -8., -5., -1., 0., 3., 4., 5., 5., 7.])

Полученные значения являются центрированными значениями набора данных.

Поскольку среднее значение исходного массива равнялось 14, эта функция просто вычитала 14 из каждого отдельного значения в исходном массиве.

Например:

  • 1-е значение в центрированном массиве = 4 – 14 = -10
  • 2-е значение в центрированном массиве = 6 – 14 = -8
  • 3-е значение в центрированном массиве = 9 – 14 = -5

И так далее.

Мы также можем убедиться, что среднее значение центрированного массива равно нулю:

#display mean of centered array
print(data_centered.mean())

0.0

Пример 2: центрирование столбцов фрейма данных Pandas

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'x': [1, 4, 5, 6, 6, 8, 9],
 'y': [7, 7, 8, 8, 8, 9, 12],
 'z': [3, 3, 4, 4, 6, 7, 7]})

#view DataFrame
print(df)

 x y z
0 1 7 3
1 4 7 3
2 5 8 4
3 6 8 4
4 6 8 6
5 8 9 7
6 9 12 7

Мы можем использовать функцию pandas apply() для центрирования значений каждого столбца в DataFrame:

#center the values in each column of the DataFrame
df_centered = df.apply ( lambda x: x-x.mean())

#view centered DataFrame
print(df_centered)

 x y z
0 -4.571429 -1.428571 -1.857143
1 -1.571429 -1.428571 -1.857143
2 -0.571429 -0.428571 -0.857143
3 0.428571 -0.428571 -0.857143
4 0.428571 -0.428571 1.142857
5 2.428571 0.571429 2.142857
6 3.428571 3.571429 2.142857

Затем мы можем убедиться, что среднее значение каждого столбца равно нулю:

#display mean of each column in the DataFrame
df_centered.mean()

x 2.537653e-16
y -2.537653e-16
z 3.806479e-16
dtype: float64

Средние значения столбца показаны в экспоненциальном представлении, но каждое значение практически равно нулю.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в Python:

Как вычислить усеченное среднее в Python
Как рассчитать среднеквадратичную ошибку (MSE) в Python
Как рассчитать среднее значение выбранных столбцов в Pandas

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