Gegevens standaardiseren in python: met voorbeelden
Het standaardiseren van een dataset betekent het schalen van alle waarden in de dataset zodat de gemiddelde waarde 0 is en de standaardafwijking 1.
We gebruiken de volgende formule om waarden in een dataset te normaliseren:
x nieuw = (x ik – x ) / s
Goud:
- x i : de i- de waarde van de dataset
- x : De steekproefgemiddelden
- s : de standaarddeviatie van het monster
We kunnen de volgende syntaxis gebruiken om snel alle kolommen in een pandas DataFrame in Python te normaliseren:
(df- df.mean ())/df. std ()
De volgende voorbeelden laten zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld 1: standaardiseer alle DataFrame-kolommen
De volgende code laat zien hoe u alle kolommen in een pandas DataFrame kunt standaardiseren:
import pandas as pd #create data frame df = pd. DataFrame ({' y ': [8, 12, 15, 14, 19, 23, 25, 29], ' x1 ': [5, 7, 7, 9, 12, 9, 9, 4], ' x2 ': [11, 8, 10, 6, 6, 5, 9, 12], ' x3 ': [2, 2, 3, 2, 5, 5, 7, 9]}) #view data frame df y x1 x2 x3 0 8 5 11 2 1 12 7 8 2 2 15 7 10 3 3 14 9 6 2 4 19 12 6 5 5 23 9 5 5 6 25 9 9 7 7 29 4 12 9 #standardize the values in each column df_new = (df- df.mean ())/df. std () #view new data frame df_new y x1 x2 x3 0 -1.418032 -1.078639 1.025393 -0.908151 1 -0.857822 -0.294174 -0.146485 -0.908151 2 -0.437664 -0.294174 0.634767 -0.525772 3 -0.577717 0.490290 -0.927736 -0.908151 4 0.122546 1.666987 -0.927736 0.238987 5 0.682756 0.490290 -1.318362 0.238987 6 0.962861 0.490290 0.244141 1.003746 7 1.523071 -1.470871 1.416019 1.768505
We kunnen verifiëren dat het gemiddelde en de standaardafwijking van elke kolom respectievelijk gelijk zijn aan 0 en 1:
#view mean of each column df_new. mean () y 0.000000e+00 x1 2.775558e-17 x2 -4.163336e-17 x3 5.551115e-17 dtype:float64 #view standard deviation of each column df_new. std () y 1.0 x1 1.0 x2 1.0 x3 1.0 dtype:float64
Voorbeeld 2: specifieke DataFrame-kolommen normaliseren
Soms wilt u misschien alleen specifieke kolommen in een DataFrame normaliseren.
Voor veel machine learning-algoritmen wil je bijvoorbeeld alleen de voorspellende variabelen standaardiseren voordat je een bepaald model aan de gegevens toevoegt.
De volgende code laat zien hoe u specifieke kolommen in een Panda DataFrame kunt standaardiseren:
import pandas as pd #create data frame df = pd. DataFrame ({' y ': [8, 12, 15, 14, 19, 23, 25, 29], ' x1 ': [5, 7, 7, 9, 12, 9, 9, 4], ' x2 ': [11, 8, 10, 6, 6, 5, 9, 12], ' x3 ': [2, 2, 3, 2, 5, 5, 7, 9]}) #view data frame df y x1 x2 x3 0 8 5 11 2 1 12 7 8 2 2 15 7 10 3 3 14 9 6 2 4 19 12 6 5 5 23 9 5 5 6 25 9 9 7 7 29 4 12 9 #define predictor variable columns df_x = df[[' x1 ', ' x2 ', ' x3 ']] #standardize the values for each predictor variable df[[' x1 ',' x2 ',' x3 ']] = (df_x- df_x.mean ())/df_x. std () #view new data frame df y x1 x2 x3 0 8 -1.078639 1.025393 -0.908151 1 12 -0.294174 -0.146485 -0.908151 2 15 -0.294174 0.634767 -0.525772 3 14 0.490290 -0.927736 -0.908151 4 19 1.666987 -0.927736 0.238987 5 23 0.490290 -1.318362 0.238987 6 25 0.490290 0.244141 1.003746 7 29 -1.470871 1.416019 1.768505
Merk op dat kolom „y“ ongewijzigd blijft, maar de kolommen „x1“, „x2“ en „x3“ zijn allemaal gestandaardiseerd.
We kunnen verifiëren dat het gemiddelde en de standaardafwijking van elke kolom met voorspellende variabelen respectievelijk gelijk zijn aan 0 en 1:
#view mean of each predictor variable column df[[' x1 ', ' x2 ', ' x3 ']]. mean () x1 2.775558e-17 x2 -4.163336e-17 x3 5.551115e-17 dtype:float64 #view standard deviation of each predictor variable column df[[' x1 ', ' x2 ', ' x3 ']]. std () x1 1.0 x2 1.0 x3 1.0 dtype:float64
Aanvullende bronnen
Hoe kolommen in een Pandas DataFrame te normaliseren
Hoe uitschieters in Python te verwijderen
Standaardisatie of normalisatie: wat is het verschil?