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