Hoe kolommen in een pandas dataframe te normaliseren
Vaak wil je misschien de datawaarden van een of meer kolommen in een pandas DataFrame normaliseren .
In deze zelfstudie worden twee manieren uitgelegd om dit te doen:
1. Min-Max-normalisatie
- Doel: Converteert elke gegevenswaarde naar een waarde tussen 0 en 1.
- Formule: Nieuwe waarde = (waarde – min) / (max – min)
2. Gemiddelde normalisatie
- Doel: Schaalt waarden zodanig dat het gemiddelde van alle waarden 0 en std is. ontwikkelaar is 1.
- Formule: Nieuwe waarde = (waarde – gemiddelde) / (standaardafwijking)
Laten we een voorbeeld bekijken van hoe u elke methode op een Panda DataFrame kunt gebruiken.
Voorbeeld 1: min-max-normalisatie
Stel dat we de volgende panda’s DataFrame hebben:
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
We kunnen de volgende code gebruiken om min-max-normalisatie toe te passen op elke kolom van het 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
De maximale waarde in elke kolom is nu 1 en de minimale waarde in elke kolom is nu 0 , met alle andere waarden tussen 0 en 1.
Voorbeeld 2: gemiddelde normalisatie
Laten we opnieuw aannemen dat we de volgende panda’s DataFrame hebben:
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
We kunnen de volgende code gebruiken om gemiddelde normalisatie toe te passen op elke kolom in het 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
De waarden in elke kolom zijn nu zodanig genormaliseerd dat het gemiddelde van de waarden in elke kolom 0 is en de standaardafwijking van de waarden in elke kolom 1 is.
Als een bepaald gegevenspunt een genormaliseerde waarde groter dan 0 heeft, geeft dit aan dat het gegevenspunt groter is dan het gemiddelde van de bijbehorende kolom. Omgekeerd geeft een genormaliseerde waarde kleiner dan 0 aan dat het gegevenspunt onder het gemiddelde van de kolom ligt.
Aanvullende bronnen
Panda’s: hoe te groeperen en aggregeren over meerdere kolommen
Hoe u een Pandas DataFrame op meerdere voorwaarden kunt filteren
Hoe ontbrekende waarden in een Pandas DataFrame te tellen