Jak normalizować kolumny w ramce danych pandas


Często możesz chcieć znormalizować wartości danych jednej lub więcej kolumn w pandzie DataFrame.

W tym samouczku wyjaśniono dwa sposoby, aby to zrobić:

1. Normalizacja Min-Max

  • Cel: Konwertuje każdą wartość danych na wartość z zakresu od 0 do 1.
  • Wzór: Nowa wartość = (wartość – min) / (max – min)

2. Średnia normalizacja

  • Cel: Skaluje wartości w taki sposób, aby średnia wszystkich wartości wynosiła 0 i std. rozw. jest 1.
  • Wzór: Nowa wartość = (wartość – średnia) / (odchylenie standardowe)

Zobaczmy przykład użycia każdej metody w ramce DataFrame pandy.

Przykład 1: normalizacja min-max

Załóżmy, że mamy następującą ramkę DataFrame pand:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'points': [25, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 9, 12],
                   'rebounds': [11, 8, 10, 6, 6]}) 

#view DataFrame
print (df)

   points assists rebounds
0 25 5 11
1 12 7 8
2 15 7 10
3 14 9 6
4 19 12 6

Możemy użyć następującego kodu, aby zastosować normalizację min-max do każdej kolumny DataFrame:

 (df-df. min ())/(df. max ()-df. min ())

        points assists rebounds
0 1.000000 0.000000 1.0
1 0.000000 0.285714 0.4
2 0.230769 0.285714 0.8
3 0.153846 0.571429 0.0
4 0.538462 1.000000 0.0

Maksymalna wartość w każdej kolumnie wynosi teraz 1 , a minimalna wartość w każdej kolumnie wynosi teraz 0 , a wszystkie pozostałe wartości mieszczą się w przedziale od 0 do 1.

Przykład 2: średnia normalizacja

Załóżmy jeszcze raz, że mamy następującą ramkę DataFrame pandy:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'points': [25, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 9, 12],
                   'rebounds': [11, 8, 10, 6, 6]}) 

#view DataFrame
print (df)

   points assists rebounds
0 25 5 11
1 12 7 8
2 15 7 10
3 14 9 6
4 19 12 6

Możemy użyć następującego kodu, aby zastosować normalizację średniej do każdej kolumny w ramce DataFrame:

 (df- df.mean ())/df. std ()

        points assists rebounds
0 1.554057 -1.133893 1.227881
1 -0.971286 -0.377964 -0.087706
2 -0.388514 -0.377964 0.789352
3 -0.582772 0.377964 -0.964764
4 0.388514 1.511858 -0.964764

Wartości w każdej kolumnie są teraz znormalizowane w taki sposób, że średnia wartości w każdej kolumnie wynosi 0, a odchylenie standardowe wartości w każdej kolumnie wynosi 1.

Jeśli dany punkt danych ma znormalizowaną wartość większą niż 0, oznacza to, że punkt danych jest większy niż średnia z jego kolumny. I odwrotnie, znormalizowana wartość mniejsza niż 0 wskazuje, że punkt danych znajduje się poniżej średniej w swojej kolumnie.

Dodatkowe zasoby

Pandy: jak grupować i agregować w wielu kolumnach
Jak filtrować ramkę danych Pandas pod wieloma warunkami
Jak policzyć brakujące wartości w Pandas DataFrame

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *