Normalizacja danych polega na przekształceniu każdego ze zmiennych w taki sposób, aby ich wartości mieściły się w określonym przedziale, najczęściej w przedziale od 0 do 1. Normalizacja danych jest często stosowana w celu zapewnienia porównywalności zmiennych o różnych skalach oraz zapobiegania zdominowaniu modelu przez zmienne o dużym zakresie wartości.
W module pandas
istnieje kilka sposobów na normalizację danych.
Jednym ze sposobów jest użycie funkcji MinMaxScaler
z module sklearn.preprocessing
. Funkcja ta działa tak, że dla każdej kolumny danych oblicza minimalną i maksymalną wartość, a następnie dla każdej wartości w danej kolumnie oblicza jej nową wartość za pomocą wzoru:
new_value = (value - min_value) / (max_value - min_value)
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
# utworzenie ramki danych
df = pd.DataFrame({'col1': [1, 2, 3, 4, 5], 'col2': [10, 20, 30, 40, 50]})
# utworzenie obiektu scalera
scaler = MinMaxScaler()
# wykonanie normalizacji danych
df_scaled = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
print(df_scaled)
col1 col2
0 0.000000 0.000000
1 0.166667 0.166667
2 0.333333 0.333333
3 0.500000 0.500000
4 0.666667 0.666667
Innym sposobem na normalizację danych jest użycie metody apply()
do przekształcenia poszczególnych kolumn za pomocą odpowiedniej funkcji. Na przykład, aby znormalizować dane z kolumny col1
tak, aby ich wartości mieściły się w przedziale od 0 do 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 normalizacji danych
def normalize(x):
return (x - x.min()) / (x.max() - x.min())
# normalizacja danych z kolumny col1
df['col1'] = df['col1'].apply(normalize)
print(df)
col1 col2
0 0.000000 10
1 0.166667 20
2 0.333333 30
3 0.500000 40
4 0.666667 50
Jak widzisz, dane z kolumny col1
zostały znormalizowane, natomiast dane z kolumny col2
pozostały niezmienione.