W3docs

Moyenne, Médiane et Mode en Python

Calculez la moyenne, médiane et mode en Python avec numpy et statistics. Exemples concrets, choix de la mesure et gestion des valeurs manquantes.

La moyenne, la médiane et le mode sont les trois mesures de tendance centrale fondamentales en statistiques. Chacune décrit le « centre » d'un jeu de données d'une manière différente, et savoir laquelle utiliser — et quand — est l'une des premières compétences pratiques dont vous avez besoin pour la préparation des données en apprentissage automatique.

Ce chapitre couvre :

  • Ce que signifie chaque mesure et comment elle est calculée
  • Comment les calculer en Python avec numpy et le module statistics
  • Quand préférer une mesure plutôt qu'une autre
  • Comment les utiliser pour remplir les valeurs manquantes (imputation)

Qu'est-ce que la Moyenne, la Médiane et le Mode ?

Ces trois mesures résument un jeu de données avec une valeur représentative unique, mais elles capturent différents aspects de la distribution :

MesureDéfinitionIdéal pour
MoyenneSomme de toutes les valeurs ÷ effectifDonnées symétriques, à distribution normale
MédianeValeur centrale après triDonnées asymétriques ou contenant des valeurs aberrantes
ModeValeur la plus fréquenteDonnées catégorielles ou dénombrements discrets

Comprendre la distribution des données vous aide à décider quelle mesure est la plus adaptée à votre jeu de données.

Moyenne

La moyenne (moyenne arithmétique) additionne toutes les valeurs et divise par le nombre de valeurs.

Formule : mean = (x₁ + x₂ + … + xₙ) / n

Utilisez numpy.mean() pour la calculer en Python :

Calculer la moyenne d'une liste avec numpy

python— editable, runs on the server

Quand utiliser la moyenne

La moyenne fonctionne bien lorsque vos données ne comportent pas de valeurs aberrantes extrêmes et suivent une distribution à peu près symétrique. En présence de valeurs aberrantes, elles tirent la moyenne vers elles et en font un mauvais représentant de la valeur « typique ».

Moyenne vs. médiane avec une valeur aberrante

import numpy as np

salaries = [40000, 42000, 45000, 48000, 50000, 300000]
print(f"Mean:   {np.mean(salaries):.0f}")    # Output: 87500
print(f"Median: {np.median(salaries):.0f}")  # Output: 46500

Ici, la moyenne est 87 500 — bien supérieure à cinq des six salaires — car une valeur extrême (300 000) la tire vers le haut. La médiane (46 500) représente mieux ce qu'un employé typique gagne.

Médiane

La médiane est la valeur centrale d'un jeu de données trié.

  • Nombre impair de valeurs : l'élément du milieu.
  • Nombre pair de valeurs : la moyenne des deux éléments du milieu.

Utilisez numpy.median() :

Calculer la médiane d'une liste avec numpy

python— editable, runs on the server

Jeu de données à effectif pair — la médiane est la moyenne des deux valeurs centrales

import numpy as np

data_even = [1, 3, 5, 7]
print(np.median(data_even))  # Output: 4.0  (average of 3 and 5)

Quand utiliser la médiane

La médiane est la mesure de tendance centrale préférée lorsque vos données sont asymétriques ou contiennent des valeurs aberrantes, car elle n'est pas affectée par les valeurs extrêmes. Les revenus, les prix immobiliers et les distributions d'âge sont des exemples classiques où la médiane est plus informative que la moyenne.

Mode

Le mode est la valeur qui apparaît le plus souvent dans un jeu de données. Un jeu de données peut avoir :

  • Aucun mode — si toutes les valeurs apparaissent le même nombre de fois.
  • Un seul mode (unimodal) — le cas le plus courant.
  • Plusieurs modes (multimodal) — deux valeurs ou plus à égalité pour la fréquence la plus élevée.

Utilisez statistics.mode() de la bibliothèque standard :

Trouver le mode d'une liste avec le module statistics

python— editable, runs on the server

Gestion des données multimodales

statistics.mode() lève une StatisticsError en Python 3.7 et antérieur lorsqu'il y a une égalité. En Python 3.8+, il retourne le premier mode rencontré. Pour récupérer en toute sécurité tous les modes, utilisez statistics.multimode() :

Trouver tous les modes lorsque les données ont plusieurs pics

import statistics

votes = [1, 1, 2, 2, 3]
print(statistics.multimode(votes))  # Output: [1, 2]

Mode pour les données numériques

Le mode est le plus naturel pour les données catégorielles ou entières discrètes, mais il fonctionne aussi pour les données numériques continues :

import statistics

scores = [10, 20, 20, 30, 40]
print(statistics.mode(scores))  # Output: 20

Quand utiliser le mode

Utilisez le mode lorsque vous travaillez avec des caractéristiques catégorielles (couleurs, étiquettes, catégories de produits) ou lorsque vous avez besoin de connaître l'élément le plus populaire — par exemple, le type de défaut le plus courant dans un jeu de données de contrôle qualité.

Comparaison des Trois Mesures

L'exemple ci-dessous montre comment la moyenne, la médiane et le mode divergent sur un jeu de données asymétrique. Quelques employés plus âgés tirent la moyenne vers le haut, tandis que la médiane et le mode restent proches de là où se trouve réellement la majorité des données :

Comparer la moyenne, la médiane et le mode sur des données asymétriques

import numpy as np
import statistics

ages = [22, 23, 24, 24, 25, 25, 25, 26, 60]

print(f"Mean:   {np.mean(ages):.1f}")         # Output: 28.2
print(f"Median: {np.median(ages):.1f}")       # Output: 25.0
print(f"Mode:   {statistics.mode(ages)}")     # Output: 25

La moyenne (28,2) est tirée vers le haut par l'unique employé de 60 ans. La médiane et le mode (tous deux à 25) représentent fidèlement l'employé typique.

Utiliser la Moyenne et la Médiane pour Imputer les Valeurs Manquantes

Une étape de prétraitement courante avant l'entraînement d'un modèle consiste à remplacer les valeurs manquantes (NaN) par une statistique représentative. C'est ce qu'on appelle l'imputation.

  • Imputation par la moyenne — remplace NaN par la moyenne de la colonne. Rapide, mais sensible aux valeurs aberrantes.
  • Imputation par la médiane — remplace NaN par la médiane. Robuste aux valeurs aberrantes ; préférée pour les caractéristiques asymétriques.
  • Imputation par le mode — remplace NaN par la valeur la plus fréquente. Appropriée pour les colonnes catégorielles.

Imputation par la moyenne avec numpy

import numpy as np

data = [10.0, 20.0, float('nan'), 40.0, 50.0]
mean_val = np.nanmean(data)          # ignores NaN: (10+20+40+50)/4 = 30.0
imputed = [mean_val if np.isnan(x) else x for x in data]
print(imputed)
# Output: [10.0, 20.0, 30.0, 40.0, 50.0]

Dans le code en production, vous utiliseriez généralement sklearn.impute.SimpleImputer, qui s'intègre proprement dans les pipelines scikit-learn et applique les mêmes statistiques ajustées aux ensembles d'entraînement et de test.

Référence Rapide : Quelle Mesure Choisir ?

ScénarioMesure recommandée
Données numériques à distribution normaleMoyenne
Données numériques asymétriques (revenus, prix)Médiane
Données avec valeurs aberrantes extrêmesMédiane
Données catégorielles (étiquettes, couleurs)Mode
Imputation de colonnes numériques avec valeurs aberrantesMédiane
Imputation de colonnes catégoriellesMode
Trouver la valeur la plus populaireMode

Sujets Connexes

  • Distribution des données — comprendre les distributions normales, asymétriques et uniformes avant de choisir une mesure.
  • Écart type — mesurer la dispersion de vos données autour de la moyenne.
  • Percentile — classer les valeurs par rapport au reste du jeu de données.
  • Mise à l'échelle — techniques de mise à l'échelle des caractéristiques qui s'appuient sur ces statistiques.

Conclusion

La moyenne, la médiane et le mode capturent chacun un aspect différent du centre de vos données. La moyenne est la valeur par défaut la plus courante, mais elle est fragile en présence de valeurs aberrantes. La médiane est robuste et devrait être votre premier choix pour les distributions asymétriques. Le mode est indispensable pour les données catégorielles et pour les requêtes rapides de type « valeur la plus courante ». En apprentissage automatique, ces trois mesures apparaissent régulièrement dans l'analyse exploratoire des données et l'imputation des valeurs manquantes — choisir la bonne pour chaque colonne conduit à des caractéristiques plus propres et à de meilleures performances du modèle.

Was this page helpful?