STATISTIQUES DESCRIPTIVES AVEC PYTHON
Guide pratique : tout calculer, avec le code
pandas · numpy · [Link] — préparation à l'analyse de données
Ce guide reprend les statistiques descriptives essentielles pour un data analyst débutant, avec pour chacune la
formule/l'idée, le code Python correspondant, et une lecture du résultat. Un seul jeu de données (des notes sur 20) est
utilisé du début à la fin pour que tu puisses comparer facilement.
0. Mise en place
Tu auras besoin de trois librairies : numpy (calcul numérique), pandas (données tabulaires) et [Link] (statistiques
plus poussées).
import numpy as np
import pandas as pd
from scipy import stats
notes = [12, 14, 3, 10, 11, 9, 16, 13, 11, 15]
s = [Link](notes) # pratique pour avoir toutes les
méthodes .mean(), .std(), etc.
1. Mesures de tendance centrale
Moyenne (mean)
La moyenne arithmétique : somme des valeurs divisée par leur nombre.
moyenne = [Link](notes)
# ou avec pandas :
moyenne = [Link]()
print(moyenne) # 11.4
Médiane (median)
La valeur du milieu quand les données sont triées. Moins sensible aux valeurs extrêmes que la moyenne.
mediane = [Link](notes)
# ou :
mediane = [Link]()
print(mediane) # 11.5
Mode
La valeur la plus fréquente. numpy n'a pas de fonction dédiée, mais scipy et pandas oui.
mode = [Link](notes, keepdims=False)
print([Link], [Link]) # valeur du mode et son nombre d'occurrences
# ou plus simple avec pandas :
mode = [Link]()
print(mode) # peut renvoyer plusieurs valeurs si égalité
2. Mesures de dispersion
Étendue (range)
Écart entre la valeur maximale et la valeur minimale.
etendue = [Link](notes) - [Link](notes)
print(etendue) # 13
Variance
Moyenne des écarts au carré par rapport à la moyenne. Attention : numpy calcule par défaut la variance de population
(diviseur n), pas celle de l'échantillon (diviseur n-1).
variance_pop = [Link](notes) # divise par n (population)
variance_ech = [Link](notes, ddof=1) # divise par n-1 (échantillon)
# avec pandas, ddof=1 est déjà le défaut :
variance_ech = [Link]()
Écart-type (standard deviation)
Racine carrée de la variance ; exprimé dans la même unité que les données, donc plus interprétable que la variance.
ecart_type_pop = [Link](notes) # population
ecart_type_ech = [Link](notes, ddof=1) # échantillon
# avec pandas :
ecart_type_ech = [Link]()
Écart interquartile (IQR)
Différence entre le 3e quartile (Q3) et le 1er quartile (Q1). Mesure de dispersion robuste, peu sensible aux valeurs
extrêmes.
q1 = [Link](notes, 25)
q3 = [Link](notes, 75)
iqr = q3 - q1
print(q1, q3, iqr)
Coefficient de variation (CV)
Écart-type divisé par la moyenne, exprimé en %. Permet de comparer la dispersion de deux séries qui n'ont pas la
même échelle.
cv = ([Link]() / [Link]()) * 100
print(cv, "%")
3. Mesures de position
Quartiles et percentiles
Divisent les données triées en parts égales (4 parts pour les quartiles, 100 pour les percentiles).
q1, q2, q3 = [Link](notes, [25, 50, 75])
p90 = [Link](notes, 90) # 90e percentile
# avec pandas, résumé rapide de tous les quartiles :
[Link]()
Score-Z (standardisation)
Indique à combien d'écarts-types une valeur se situe par rapport à la moyenne. Utile pour repérer des valeurs
atypiques (outliers) ou comparer des séries différentes.
z_scores = [Link](notes)
print(z_scores)
# une règle courante : |z| > 3 signale souvent une valeur aberrante
4. Forme de la distribution
Asymétrie (skewness)
Mesure si la distribution penche vers la gauche ou la droite. 0 = symétrique, positif = queue à droite, négatif = queue à
gauche.
asymetrie = [Link](notes)
print(asymetrie)
Aplatissement (kurtosis)
Mesure si la distribution a des queues plus ou moins épaisses qu'une loi normale (donc plus ou moins de valeurs
extrêmes).
aplatissement = [Link](notes) # excess kurtosis : 0 = comme une loi
normale
print(aplatissement)
5. Relations entre deux variables
Covariance
Indique si deux variables évoluent dans le même sens (positive), en sens opposé (négative), ou sans lien clair (proche
de 0). Difficile à interpréter seule car dépend de l'échelle des données.
heures_revision = [2, 3, 1, 4, 5, 2, 6, 3, 4, 5]
covariance = [Link](notes, heures_revision, ddof=1)[0, 1]
print(covariance)
Corrélation (coefficient de Pearson)
Version normalisée de la covariance, toujours entre -1 et 1. Mesure la force et le sens d'une relation linéaire entre deux
variables.
correlation, p_value = [Link](notes, heures_revision)
print("r =", correlation, " p =", p_value)
# avec pandas, matrice de corrélation sur un DataFrame entier :
df = [Link]({"notes": notes, "heures_revision": heures_revision})
[Link]()
Rappel important : une corrélation, même forte, ne prouve pas une causalité — deux variables peuvent évoluer
ensemble sans que l'une cause l'autre.
6. Résumé automatique
Pandas peut calculer d'un coup la plupart des statistiques descriptives sur une série ou un DataFrame entier.
[Link]()
# renvoie : count, mean, std, min, 25%, 50%, 75%, max
[Link]() # applique la même chose à toutes les colonnes numériques d'un
DataFrame
7. Visualisation rapide
Une bonne pratique en analyse de données : toujours visualiser une distribution en plus de calculer ses statistiques.
import [Link] as plt
[Link](notes, bins=5, edgecolor="black")
[Link]("Distribution des notes")
[Link]("Note")
[Link]("Effectif")
[Link]()
[Link](notes)
[Link]("Boîte à moustaches des notes")
[Link]()
8. Aide-mémoire (cheat sheet)
Statistique numpy / scipy pandas
Moyenne [Link](x) [Link]()
Médiane [Link](x) [Link]()
Mode [Link](x) [Link]()
Variance (échantillon) [Link](x, ddof=1) [Link]()
Écart-type (échantillon) [Link](x, ddof=1) [Link]()
Étendue [Link](x) - [Link](x) [Link]() - [Link]()
Quartiles / percentiles [Link](x, [25,50,75]) [Link]([.25,.5,.75])
Score-Z [Link](x) (s - [Link]()) / [Link]()
Asymétrie [Link](x) [Link]()
Aplatissement [Link](x) [Link]()
Covariance [Link](x, y) [Link]()
Corrélation [Link](x, y) [Link]()
Résumé complet — [Link]() /
[Link]()
Conseil d'utilisation
1. Commence toujours par [Link]() pour avoir une vue d'ensemble avant de calculer une statistique précise.
2. Vérifie systématiquement si tu dois utiliser ddof=0 (population) ou ddof=1 (échantillon) — c'est l'erreur la plus
fréquente chez les débutants en numpy.
3. Corrèle toujours l'analyse chiffrée à un graphique (histogramme, boxplot) avant de tirer une conclusion.
4. Retiens la nuance corrélation ≠ causalité, un point que tu as déjà travaillé dans ton programme de data analyst.