Pandas : comment calculer l’écart type pour chaque ligne
Vous pouvez utiliser la syntaxe de base suivante pour calculer l’écart type des valeurs pour chaque ligne d’un DataFrame pandas :
df.std(axis=1, numeric_only=True)
L’argument axis=1 indique aux pandas d’effectuer le calcul pour chaque ligne (au lieu de chaque colonne) et numeric_only=True indique aux pandas de ne prendre en compte que les colonnes numériques lors de l’exécution du calcul.
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : calculer l’écart type pour chaque ligne dans Pandas
Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur les points marqués par divers joueurs de basket-ball au cours de quatre matchs différents :
import pandas as pd
#create DataFrame
df = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
'game1': [18, 22, 19, 14, 14, 11, 20, 28],
'game2': [5, 7, 7, 9, 12, 9, 9, 4],
'game3': [11, 8, 10, 6, 6, 5, 9, 12],
'game4': [9, 8, 8, 9, 14, 15, 10, 11]})
#view DataFrame
print(df)
player game1 game2 game3 game4
0 A 18 5 11 9
1 B 22 7 8 8
2 C 19 7 10 8
3 D 14 9 6 9
4 E 14 12 6 14
5 F 11 9 5 15
6 G 20 9 9 10
7 H 28 4 12 11
On peut utiliser la syntaxe suivante pour calculer l’écart type des points marqués par chaque joueur :
#calculate standard deviation for each row
df.std(axis=1, numeric_only=True)
0 5.439056
1 7.182154
2 5.477226
3 3.316625
4 3.785939
5 4.163332
6 5.354126
7 10.144785
dtype: float64
Voici comment interpréter le résultat :
- L’écart type des points marqués par le joueur A est de 5,439 .
- L’écart type des points marqués par le joueur B est de 7,182 .
- L’écart type des points marqués par le joueur C est de 5,477 .
Et ainsi de suite.
Notez que la fonction std() calcule l’écart type de l’échantillon par défaut.
Si vous souhaitez plutôt calculer l’écart type de la population, vous devez utiliser l’argument ddof=0 :
#calculate population standard deviation for each row
df.std(axis=1, ddof=0, numeric_only=True)
0 4.747351
1 5.881366
2 4.807037
3 3.384910
4 3.983518
5 3.915150
6 4.892772
7 8.091179
dtype: float64
Connexes : Écart type de la population par rapport à l’échantillon : quand utiliser chacun
Pour attribuer les valeurs d’écart type à une nouvelle colonne, vous pouvez utiliser la syntaxe suivante :
#add new column to display standard deviation for each row
df['points_std'] = df.std(axis=1, numeric_only=True)
#view updated DataFrame
print(df)
player game1 game2 game3 game4 points_std
0 A 18 5 11 9 5.439056
1 B 22 7 8 8 7.182154
2 C 19 7 10 8 5.477226
3 D 14 9 6 9 3.316625
4 E 14 12 6 14 3.785939
5 F 11 9 5 15 4.163332
6 G 20 9 9 10 5.354126
7 H 28 4 12 11 10.144785
L’écart type des valeurs pour chaque ligne des colonnes game1 , game2 , game3 et game4 est désormais affiché dans la colonne points_std .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment obtenir la première rangée de Pandas DataFrame
Comment supprimer la première ligne dans Pandas DataFrame
Comment insérer une ligne dans un DataFrame Pandas