Comment standardiser les données en Python : avec des exemples
Standardiser un ensemble de données signifie mettre à l’échelle toutes les valeurs de l’ensemble de données de telle sorte que la valeur moyenne soit 0 et l’écart type soit 1.
Nous utilisons la formule suivante pour normaliser les valeurs dans un ensemble de données :
x nouveau = (x je – x ) / s
où:
- x i : la ième valeur de l’ensemble de données
- x : La moyenne de l’échantillon
- s : l’écart type de l’échantillon
Nous pouvons utiliser la syntaxe suivante pour normaliser rapidement toutes les colonnes d’un DataFrame pandas en Python :
(df-df.mean())/df.std()
Les exemples suivants montrent comment utiliser cette syntaxe dans la pratique.
Exemple 1 : standardiser toutes les colonnes de DataFrame
Le code suivant montre comment standardiser toutes les colonnes d’un DataFrame pandas :
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
On peut vérifier que la moyenne et l’écart type de chaque colonne sont respectivement égaux à 0 et 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
Exemple 2 : normaliser des colonnes spécifiques de DataFrame
Parfois, vous souhaiterez peut-être uniquement normaliser des colonnes spécifiques dans un DataFrame.
Par exemple, pour de nombreux algorithmes d’apprentissage automatique, vous souhaiterez peut-être uniquement standardiser les variables prédictives avant d’ajuster un certain modèle aux données.
Le code suivant montre comment standardiser des colonnes spécifiques dans un DataFrame pandas :
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
Notez que la colonne « y » reste inchangée, mais les colonnes « x1 », « x2 » et « x3 » sont toutes standardisées.
Nous pouvons vérifier que la moyenne et l’écart type de chaque colonne de variables prédictives sont respectivement égaux à 0 et 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
Ressources additionnelles
Comment normaliser les colonnes dans un DataFrame Pandas
Comment supprimer les valeurs aberrantes en Python
Standardisation ou normalisation : quelle est la différence ?