Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Choisir le graphique qui répond à la question

Après cette leçon: Je peux choisir un graphique qui répond à une question.

Leçon de 50 min3 commandesLab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Un petit écart qui paraissait énorme

En réunion, un responsable regarde un diagramme en barres. La barre du soleil écrase celle de la pluie. Il veut donc douze fois plus de vélos les jours de beau temps.

Le vrai écart est bien plus petit. Les nombres du graphique étaient justes. Son axe trompait, et il répondait à la mauvaise question.

À la fin de cette leçon

Remarque

Je peux choisir un graphique qui répond à une question.

Mots clés

MotCe que ça veut direExemple
Diagramme en barresune barre par groupe, sa longueur donne la valeur
Courbedes points reliés dans l’ordre, souvent dans le temps
Histogrammedes barres qui comptent les valeurs tombées dans chaque intervalle
Classeun intervalle de valeurs dans un histogramme250 à 299
Nuage de pointsun point par ligne, placé par deux nombres
Axel’échelle le long d’un bord du graphique

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

La question choisit le graphique

Partez de la question, pas du graphique. Pour comparer des groupes, prenez un diagramme en barres. Pour montrer une évolution dans le temps, une courbe.

Pour voir comment un nombre se répartit, un histogramme. Pour savoir si deux nombres varient ensemble, un nuage de points.

Le camembert est rarement le bon choix : l’œil juge bien mieux une longueur qu’un angle.

Exemple travaillé : quatre questions, quatre graphiques

Question sur les locationsGraphiquepandas
Quelle météo attire le plus ?Diagramme en barresmoyennes.plot.bar()
Comment les locations évoluent-elles dans l’année ?Courbepar_mois.plot.line()
Combien de jours calmes, normaux ou chargés ?Histogrammelocations["hires"].plot.hist()
Les jours chauds sont-ils plus chargés ?Nuage de pointslocations.plot.scatter(x="temp_c", y="hires")

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

La moyenne des locations par mois

Commande
docker exec jupyter python3 steps/months.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

À taper dans votre carnet : une courbe

Code: python
import pandas as pd

locations = pd.read_csv("hires.csv")
ordre = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
par_mois = locations.groupby("month")["hires"].mean().reindex(ordre)
# Une courbe, car les mois se suivent.
par_mois.plot.line(marker="o", title="Locations moyennes par jour")

Un histogramme range les valeurs en classes

Un histogramme découpe une droite de nombres en classes de même largeur. Chaque valeur tombe dans une seule classe. La hauteur de la barre dit combien de valeurs y sont tombées.

Avec des classes de 50, un jour à 273 locations va dans la classe de 250 à 299. Divisez par la largeur sans garder le reste : 273 // 50 vaut 5, la sixième classe en comptant depuis 0.

Ranger les jours en classes

Commande
docker exec jupyter python3 steps/hist.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Des classes à la main

Code: python
# Ranger les locations de huit jours dans des classes de 100.
jours = [35, 92, 140, 268, 271, 299, 300, 480]
largeur = 100
comptes = [0, 0, 0, 0, 0]
for valeur in jours:
    place = valeur // largeur
    comptes[place] = comptes[place] + 1
print(comptes)
# Mettez largeur à 50 et comptes à dix zéros.
# Quelle classe est alors la plus remplie ?

À taper dans votre carnet : classes de 100

Code: python
# La division entière donne le numéro de classe de chaque jour.
(locations["hires"] // 100).value_counts().sort_index()

Une barre part de zéro

Le lecteur juge une barre à sa longueur. L’axe des valeurs d’un diagramme en barres doit donc partir de zéro, sinon les longueurs mentent.

axis.py trace deux fois la moyenne des locations par météo. À gauche, l’axe part de 0. À droite, il part de 220, juste sous la moyenne des jours de pluie. Le script enregistre les deux dans axis.png, à ouvrir depuis la liste de fichiers de JupyterLab.

Tracer un graphique de deux façons

Commande
docker exec jupyter python3 steps/axis.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une erreur fréquente

Attention

Beaucoup pensent qu’un axe peut partir de n’importe où, sur n’importe quel graphique. Sur un diagramme en barres, la longueur est la valeur : partez de zéro. Une courbe montre une évolution plutôt qu’une taille. Son axe peut donc partir près des données, si les graduations le disent.

Pour aller plus loin

Dans votre carnet, tracez un histogramme des locations pour les jours de soleil et un autre pour les jours de pluie, sur les mêmes classes. Prenez range(0, 550, 50) comme classes et alpha=0.5 pour voir les deux.

Écrivez une phrase utile à la gérante. Dites ensuite quel graphique de la leçon répondrait à la même question avec un seul nombre par groupe.

À propos de ce labo et de sa source: Lab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.