Центрировать набор данных означает вычесть среднее значение из каждого отдельного наблюдения в наборе данных.
После центрирования набора данных среднее значение набора данных становится равным нулю.
В следующих примерах показано, как центрировать данные в 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