Standaryzacja danych polega na przekształceniu każdej ze zmiennych w taki sposób, aby jej średnia była równa 0, a odchylenie standardowe wynosiło 1. Standaryzacja danych jest często stosowana w celu zapewnienia porównywalności zmiennych o różnych rozkładach oraz zapobiegania zdominowaniu modelu przez zmienne o dużym odchyleniu standardowym.
W module pandas
istnieje kilka sposobów na standaryzację danych.
Jednym ze sposobów jest użycie funkcji StandardScaler
z module sklearn.preprocessing
. Funkcja ta działa tak, że dla każdej kolumny danych oblicza średnią i odchylenie standardowe, a następnie dla każdej wartości w danej kolumnie oblicza jej nową wartość za pomocą wzoru:
new_value = (value - mean) / standard_deviation
import pandas as pd
from sklearn.preprocessing import StandardScaler
# utworzenie ramki danych
df = pd.DataFrame({'col1': [1, 2, 3, 4, 5], 'col2': [10, 20, 30, 40, 50]})
# utworzenie obiektu scalera
scaler = StandardScaler()
# wykonanie standaryzacji danych
df_scaled = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
print(df_scaled)
col1 col2
0 -1.46385 -1.46385
1 -0.87831 -0.87831
2 -0.29277 -0.29277
3 0.29277 0.29277
4 0.87831 0.87831
Innym sposobem na standaryzację danych jest użycie metody apply()
do przekształcenia poszczególnych kolumn za pomocą odpowiedniej funkcji. Na przykład, aby standaryzować dane z kolumny col1
tak, aby ich średnia była równa 0, a odchylenie standardowe wynosiło 1, można użyć następującego kodu:
import pandas as pd
# utworzenie ramki danych
df = pd.DataFrame({'col1': [1, 2, 3, 4, 5], 'col2': [10, 20, 30, 40, 50]})
# funkcja do standaryzacji danych
def standardize(x):
return (x - x.mean()) / x.std()
# standaryzacja danych z kolumny col1
df['col1'] = df['col1'].apply(standardize)
print(df)
col1 col2
0 -1.46385 10
1 -0.87831 20
2 -0.29277 30
3 0.29277 40
4 0.87831 50
Jak widzisz, dane z kolumny col1
zostały standaryzowane, natomiast dane z kolumny col2
pozostały niezmienione.