Standaryzacja danych

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.