Types de variables et distributions de fréquences

Première leçon du cours Statistiques descriptives, en accès libre : environ 15 minutes, 3 exercices et 3 questions de quiz. C'est la leçon de base du catalogue ; dans l'espace étudiant, elle est réécrite pour ton profil.

Objectifs

  • Distinguer variables qualitatives (nominales, ordinales) et quantitatives (discrètes, continues)
  • Construire un tableau d'effectifs et de fréquences en Python

Types de variablesEffectifs et fréquences

Avant de calculer quoi que ce soit, il faut savoir quel type de donnée on manipule. C’est ce qui détermine les calculs autorisés.

Individus, variables, modalités

Dans un tableau de données, chaque ligne est un individu (un client, une commande, un jour) et chaque colonne est une variable. Les valeurs possibles d’une variable s’appellent des modalités.

Quatre familles de variables

Famille Sous-type Exemples
Qualitative nominale (pas d’ordre) canal d’acquisition, pays, couleur
Qualitative ordinale (ordre naturel) satisfaction « faible / moyenne / forte », taille S/M/L
Quantitative discrète (valeurs comptables) nombre d’articles, nombre d’enfants
Quantitative continue (toute valeur d’un intervalle) montant, durée, température

Piège classique : un code postal ou un identifiant client s’écrit avec des chiffres, mais calculer leur moyenne n’a aucun sens. Ce sont des variables qualitatives.

Compter les modalités

Le premier résumé d’une variable qualitative (ou discrète) est son tableau d’effectifs : combien de fois chaque modalité apparaît.

from collections import Counter

canaux = ["web", "magasin", "web", "appli", "web", "magasin"]
effectifs = Counter(canaux)          # compte chaque modalité
print(effectifs)                     # Counter({'web': 3, 'magasin': 2, 'appli': 1})

total = sum(effectifs.values())
frequences = {k: v / total for k, v in effectifs.items()}
print(frequences["web"])             # 0.5, soit 50 %

La fréquence d’une modalité est son effectif divisé par l’effectif total. La somme des fréquences vaut toujours 1 (ou 100 %).

Avec pandas

Sur un vrai jeu de données, on utilise pandas :

import pandas as pd

s = pd.Series(["web", "magasin", "web", "appli", "web", "magasin"])
print(s.value_counts())                 # effectifs, triés du plus grand au plus petit
print(s.value_counts(normalize=True))   # fréquences

Variables ordinales et fréquences cumulées

Pour une variable ordinale ou quantitative discrète, on peut cumuler les fréquences dans l’ordre des modalités : « 70 % des clients ont acheté 2 articles ou moins ». Il faut alors trier par modalité, pas par effectif.

nb_articles = pd.Series([1, 2, 2, 3, 1, 2, 4, 1, 2, 3])
freq = nb_articles.value_counts(normalize=True).sort_index()  # tri par modalité
print(freq.cumsum())   # 1 -> 0.3, 2 -> 0.7, 3 -> 0.9, 4 -> 1.0

Pour une variable continue (montants), on regroupe d’abord les valeurs en classes (intervalles), par exemple avec pd.cut, avant de compter.

À retenir

  • Identifie le type de chaque variable avant tout calcul.
  • Effectif = comptage ; fréquence = effectif / total.
  • Les fréquences cumulées n’ont de sens que si les modalités sont ordonnées.

Exercices

Les solutions et les tests restent sur le serveur. Dans l'espace étudiant, ton code est exécuté et corrigé, et le tuteur donne des indices avant la solution.

  1. CodeDifficulté 1Python dans le navigateur2 indices

    Fréquences d'un canal

    On dispose de la liste canaux. Crée un dictionnaire frequences qui associe à chaque canal sa fréquence (entre 0 et 1), en utilisant collections.Counter.

    from collections import Counter
    
    canaux = ['web', 'magasin', 'web', 'appli', 'web', 'magasin', 'web', 'appli']
    
    # frequences = ...
  2. CodeDifficulté 2Python dans le navigateur2 indices

    Fréquences cumulées avec pandas

    La série nb_articles contient le nombre d’articles par commande. Calcule freq_cum, la série des fréquences cumulées triée par nombre d’articles croissant. Puis stocke dans part_2_ou_moins la part des commandes de 2 articles ou moins.

    import pandas as pd
    
    nb_articles = pd.Series([1, 2, 2, 3, 1, 2, 4, 1, 2, 3])
    
    # freq_cum = ...
    # part_2_ou_moins = ...
  3. QCMDifficulté 11 indice

    Identifier le type d'une variable

    Quel est le type de la variable « code postal du client » ?

    • Quantitative discrète
    • Quantitative continue
    • Qualitative nominale
    • Qualitative ordinale

Quiz de fin de leçon

  1. La taille de vêtement (S, M, L, XL) est une variable :

    • Qualitative nominale
    • Qualitative ordinale
    • Quantitative continue
  2. Sur 200 commandes, 50 viennent de l’appli. Quelle est la fréquence de l’appli ?

    • 50
    • 0.25
    • 0.5
    • 4
  3. Que renvoie s.value_counts(normalize=True) ?

    • Les effectifs bruts
    • Les fréquences de chaque modalité
    • La moyenne de la série

La suite du cours

  1. Tendance centrale : moyenne, médiane et mode15 min
  2. Dispersion : étendue, variance et écart-type18 min
  3. Quantiles, boîtes à moustaches et valeurs aberrantes18 min
  4. Relation entre deux variables : tableaux croisés et corrélation20 min

Statistiques descriptives · Débutant · 2 h 26