Visualisation avec Matplotlib et seaborn

Transforme des tableaux pandas en graphiques clairs avec Python. Construis des figures et des zones de tracé dans Matplotlib, trace des graphiques en courbes, des nuages de points et des diagrammes en barres, puis crée des graphiques directement à partir de pandas après avoir agrégé et remodelé les données. Utilise seaborn pour créer des graphiques statistiques, des histogrammes, des boîtes à moustaches et des cartes de chaleur, compare des groupes à l’aide de petits multiples et de facettes, puis ajoute des libellés et des annotations à chaque figure avant de l’exporter pour un rapport ou le Web.

IntermédiaireUnité 7 sur 8 de la formation Formation : Python et pandas : NumPy, analyse et visualisation de données

Ce que tu vas apprendre

  1. Créer une figure et ses zones de tracé avec l’interface orientée objet de Matplotlib, y tracer des graphiques en courbes, des nuages de points et des diagrammes en barres, et maîtriser les titres, les libellés, les graduations, les bornes, les légendes et les styles.
    • Créer une figure et ses zones de tracé
      Comprendre comment un graphique Matplotlib est construit à partir d’une figure, d’une ou plusieurs zones de tracé et des éléments qui y sont dessinés, et choisir entre les approches pyplot et orientée objet pour écrire le code de tracé.
    • Tracer des graphiques en courbes et des nuages de points
      Tracer des valeurs le long d’un axe ordonné avec ax.plot et des observations individuelles avec ax.scatter, puis maîtriser la couleur, le style de ligne, les marqueurs, leur taille et leur transparence.
    • Comparer des catégories avec des diagrammes en barres
      Tracer des diagrammes en barres verticales, horizontales, groupées et empilées avec ax.bar et ax.barh, puis afficher la valeur de chaque barre.
    • Ajouter les libellés, définir les échelles et régler le style d’un graphique
      Définir les titres, les libellés des axes, les bornes, les graduations, leur format, les échelles, les légendes et les grilles, et modifier l’aspect général des graphiques avec des feuilles de style et des paramètres.
  2. Agréger, trier et remodeler les tableaux avant de tracer des graphiques directement à partir d’objets Series et DataFrame avec la méthode plot de pandas, afin que chaque graphique représente les valeurs voulues.
    • Utiliser la méthode plot de pandas
      Créer des graphiques en courbes, des diagrammes en barres, des histogrammes, des boîtes à moustaches, des graphiques en aires, des diagrammes circulaires et des nuages de points à partir d’un objet Series ou DataFrame, puis personnaliser les zones de tracé Matplotlib qu’ils renvoient.
    • Organiser les données avant de tracer un graphique
      Agréger, compter, trier, pivoter et dépivoter un tableau pour qu’il contienne exactement les valeurs à représenter, dans le format attendu par pandas ou seaborn.
  3. Utiliser seaborn pour associer les colonnes d’un DataFrame aux positions, aux couleurs et aux styles, représenter les relations entre variables quantitatives avec des indicateurs de tendance et comparer des groupes avec des graphiques par catégorie.
    • Associer les colonnes aux caractéristiques visuelles des graphiques dans seaborn
      Désigner les colonnes du DataFrame qui définissent la position, la couleur, le style et la taille, distinguer les fonctions au niveau d’une zone de tracé de celles au niveau d’une figure, et définir les thèmes et palettes seaborn.
    • Représenter les relations entre variables quantitatives
      Tracer avec seaborn des nuages de points, des courbes de valeurs agrégées avec bandes d’incertitude, des droites de régression et des matrices de nuages de points, et interpréter ce que les bandes et les lignes montrent ou non.
    • Comparer des groupes avec des graphiques par catégorie
      Comparer une variable quantitative entre catégories avec des diagrammes en barres, des diagrammes des effectifs, des graphiques de points, des diagrammes en points par catégorie et des diagrammes en essaim, et choisir leur estimateur, leurs barres d’erreur, leur ordre et leur orientation.
  4. Représenter la distribution d’une variable quantitative avec des histogrammes, des courbes de densité, des boîtes à moustaches et des diagrammes en violon, et afficher un tableau de valeurs ou de corrélations sous forme de carte de chaleur.
    • Représenter une distribution avec des histogrammes et des courbes de densité
      Construire des histogrammes dans Matplotlib, pandas et seaborn, choisir les classes et les échelles, et ajouter ou comparer des courbes de densité lissées.
    • Synthétiser et comparer des distributions avec des boîtes à moustaches
      Lire et tracer des boîtes à moustaches à partir des quartiles et de la règle de 1,5 × l’écart interquartile, comparer des groupes avec ces boîtes et utiliser des diagrammes en violon et en points par catégorie pour montrer ce qu’une boîte masque.
    • Représenter une grille de valeurs par une carte de chaleur
      Transformer un tableau croisé dynamique ou une matrice de corrélation en carte de chaleur avec seaborn ou Matplotlib, et maîtriser les annotations, les formats numériques, les échelles de couleurs et leurs bornes.
  5. Disposer des petits multiples avec des sous-graphiques Matplotlib et des facettes seaborn, mettre en évidence les éléments importants avec du texte, des flèches et des lignes de référence, puis enregistrer les figures au format et à la taille adaptés aux rapports et au Web.
    • Disposer plusieurs graphiques dans une figure
      Créer des grilles de zones de tracé avec plt.subplots, partager les échelles entre panneaux, remplir les panneaux dans une boucle, régler les espacements et les titres, et construire des panneaux de tailles différentes.
    • Répartir les données en facettes avec seaborn
      Répartir un graphique en panneaux selon une ou deux variables qualitatives avec les arguments col, row et col_wrap des fonctions au niveau d’une figure ou avec FacetGrid, puis personnaliser la grille obtenue.
    • Ajouter des annotations et des lignes de référence
      Placer du texte, des flèches, des lignes de référence, des plages ombrées et des étiquettes de valeurs sur un graphique, en coordonnées des données ou en coordonnées relatives à la zone de tracé.
    • Enregistrer des figures pour des rapports et le Web
      Exporter des figures avec savefig aux formats matriciel ou vectoriel, maîtriser la taille, la résolution, les marges et l’arrière-plan, et les enregistrer au bon moment dans les scripts, les notebooks et les boucles.

Visualisation avec Matplotlib et seaborn : cours

5 chapitres

1

Construire des graphiques avec les figures et les zones de tracé de Matplotlib

Une commande de tracé a besoin d’un endroit où dessiner. Matplotlib rend cet espace explicite : une figure contient une ou plusieurs zones de tracé, et chaque zone contient les marques et les libellés. Commence par une zone, puis utilise les mêmes objets pour ajouter des lignes, des points, des barres et des réglages utiles. Donner un nom à la figure et à chaque zone de tracé permet de modifier plus facilement le bon graphique lorsqu’un notebook s’étoffe ou qu’une figure contient plusieurs panneaux.

1.1 Créer une figure et ses zones de tracé

Matplotlib est la bibliothèque de tracé standard de Python ; pandas et seaborn l’utilisent tous deux pour dessiner. Par convention, elle est importée avec import matplotlib.pyplot as plt. Dans un notebook Jupyter, un graphique apparaît sous la cellule qui le dessine ; dans un script, plt.show() affiche les figures ouvertes et, dans un script normal, attend que leurs fenêtres soient fermées.

Une figure est le canevas entier : l’image affichée ou enregistrée. Une zone de tracé est un espace de tracé dans la figure, avec ses propres données, son titre, les libellés et les bornes de ses axes ; une figure peut en contenir plusieurs. Un axe est l’un des axes gradués d’une zone de tracé, l’axe des abscisses ou celui des ordonnées, avec ses graduations et leurs libellés. Chaque élément visible, comme une ligne, un marqueur, un texte ou une barre, est appelé objet graphique.

fig, ax = plt.subplots() crée une figure avec une zone de tracé et renvoie les deux objets. figsize=(width, height) définit les dimensions de la figure en pouces. Par défaut, elles sont de 6,4 × 4,8 pouces à 100 points par pouce : une figure par défaut mesure donc 640 × 480 pixels à l’écran ; plt.subplots(figsize=(8, 4)) crée une figure plus large et plus aplatie.

Matplotlib propose deux styles. Dans le style orienté objet, tu appelles des méthodes sur des objets explicites : ax.plot(...), ax.set_title(...). Dans le style pyplot, des fonctions comme plt.plot(...) et plt.title(...) agissent sur la zone de tracé « courante », généralement la dernière créée. Les deux produisent les mêmes graphiques ; le style orienté objet est plus clair dès qu’une figure comporte plusieurs zones de tracé ou que le code de tracé est placé dans une fonction. C’est donc celui qu’utilise ce cours.

Les deux styles utilisent des noms différents pour les mêmes paramètres : plt.title, plt.xlabel et plt.xlim correspondent à ax.set_title, ax.set_xlabel et ax.set_xlim. Une erreur fréquente consiste à écrire ax.title("Rainfall") : sur une zone de tracé, title est un attribut qui contient un objet texte ; l’appeler déclenche donc TypeError: 'Text' object is not callable. Utilise ax.set_title("Rainfall").

months = [1, 2, 3, 4, 5, 6]; temp_c = [3, 5, 9, 13, 17, 20], puis

fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(months, temp_c)
ax.set_title("Mean monthly temperature")
ax.set_xlabel("Month")
ax.set_ylabel("Temperature (°C)")

.

Les appels de tracé ajoutent des éléments à une zone de tracé ; ils ne remplacent pas ceux qui s’y trouvent. Un second ax.plot(...) sur le même ax ajoute une deuxième courbe au même graphique. Pour obtenir un graphique distinct, crée une nouvelle figure avec un autre appel à plt.subplots(), ou trace sur une autre zone de tracé d’une figure à plusieurs panneaux.

pyplot garde ouvertes toutes les figures qu’il a créées jusqu’à leur fermeture avec plt.close(fig) ou plt.close("all"). Les figures ouvertes occupent de la mémoire et, lorsque plus de 20 figures sont ouvertes, Matplotlib émet un avertissement. Un code qui crée des figures dans une boucle doit fermer chaque figure après l’avoir enregistrée.

Points clés

  • Une figure est le canevas ; une zone de tracé est un espace où dessiner un graphique.
  • Appelle les méthodes sur la zone de tracé à modifier.
  • Tracer à nouveau sur la même zone ajoute des objets graphiques.
  • Dans les boucles, ferme les figures après les avoir enregistrées.

1.2 Tracer des graphiques en courbes et des nuages de points

ax.plot(x, y) dessine des marqueurs ou des segments de droite qui relient les points dans l’ordre fourni. Un graphique en courbes convient à une grandeur mesurée selon une variable ordonnée comme le temps ou la distance. Avec un seul argument, ax.plot(y), les abscisses sont par défaut 0, 1, 2, ….

Comme les points sont reliés dans l’ordre fourni, des abscisses non triées produisent un zigzag qui traverse le graphique dans les deux sens. Pour x = [3, 1, 2], la ligne va de x = 3 à x = 1, puis repart vers x = 2. Trie d’abord les données selon x, par exemple avec df.sort_values("x").

Arguments de style : color (un nom comme "black" ou "tab:orange", ou un code hexadécimal comme "#1f77b4"), linestyle ("-" continu, "--" tirets, ":" pointillés, "-." tirets-points), linewidth, marker ("o" cercle, "s" carré, "^" triangle) et markersize. Une courte chaîne de format combine le marqueur et le style de ligne : ax.plot(x, y, "o--") dessine des cercles reliés par une ligne en tirets. Sans color, chaque nouvelle ligne prend la couleur suivante du cycle par défaut, qui commence par "tab:blue" et "tab:orange".

Attribue un label à chaque ligne et appelle ax.legend() pour afficher une légende :

ax.plot(months, north, marker="o", label="North")
ax.plot(months, coast, linestyle="--", label="Coast")
ax.legend()

. Si aucun objet graphique n’a de libellé, ax.legend() ne dessine rien et Matplotlib avertit qu’aucun objet graphique avec libellé n’a été trouvé.

ax.scatter(x, y) dessine un marqueur non relié par observation et convient pour représenter la relation entre deux variables quantitatives. Exemple : températures quotidiennes [12, 15, 18, 21, 24, 27, 30, 22] °C et nombres de locations de vélos [180, 220, 260, 310, 330, 360, 340, 250] ; ax.scatter(temp_c, rentals) montre que les locations augmentent globalement avec la température, et la corrélation entre les deux listes est d’environ 0,92.

Dans ax.scatter, s définit l’aire de chaque marqueur en points carrés ; la valeur par défaut est 36, soit l’aire d’un marqueur de 6 points de large. Doubler s double l’aire : la largeur du marqueur n’augmente donc que d’un facteur d’environ 1,4. s peut être un seul nombre ou une valeur par point, ce qui permet de représenter une troisième variable par la taille des marqueurs.

c colore les points : une couleur pour tous, ou un nombre par point associé à une couleur d’une palette comme cmap="viridis". Conserve l’objet renvoyé et ajoute une barre de couleurs : sc = ax.scatter(temp_c, rentals, c=rain_mm, cmap="viridis"); fig.colorbar(sc, ax=ax, label="Rain (mm)").

Lorsque de nombreux points se chevauchent, les zones denses deviennent des taches pleines qui masquent le nombre de points qu’elles contiennent. Réduis l’opacité avec alpha=0.3, utilise des marqueurs plus petits ou représente plutôt la densité, par exemple avec un graphique à classes hexagonales (df.plot.hexbin) ou un histogramme bidimensionnel.

ax.plot(x, y, "o"), avec un marqueur et sans ligne, dessine aussi des points. Cette méthode est plus rapide pour un très grand nombre de points, car tous les marqueurs ont la même taille et la même couleur. Utilise ax.scatter lorsque la taille ou la couleur doit varier d’un point à l’autre.

Points clés

  • Les lignes relient les points dans l’ordre fourni.
  • La taille des marqueurs d’un nuage de points est une aire en points carrés.
  • Une correspondance entre nombres et couleurs nécessite une barre de couleurs.
  • Utilise des libellés et une légende pour identifier les séries.
  • La transparence aide à voir les observations qui se chevauchent.

1.3 Comparer des catégories avec des diagrammes en barres

ax.bar(categories, heights) dessine une barre verticale par catégorie ; ax.barh(categories, widths) dessine des barres horizontales, qui laissent de la place aux noms de catégories longs. Lorsque les catégories sont des chaînes de caractères, Matplotlib les place à intervalles réguliers dans l’ordre fourni et les utilise comme libellés des graduations. Lorsqu’il s’agit de nombres, les barres sont placées à ces positions sur un axe numérique ordinaire.

Par défaut, les barres partent d’une ligne de base située à 0 : leur longueur représente donc leur valeur. L’argument width est mesuré dans les unités de l’axe des abscisses et vaut 0,8 par défaut. Les catégories représentées par des chaînes sont espacées d’une unité : la valeur par défaut laisse donc un espace de 0,2 entre les barres, et width=1 fait se toucher les barres voisines.

On a demandé à 200 personnes comment elles effectuaient habituellement leur trajet domicile-travail : voiture 84, bus 52, vélo 38, marche 26. ax.barh(["Car", "Bus", "Bike", "Walk"], [84, 52, 38, 26]) dessine quatre barres horizontales. Les proportions sont de 42 %, 26 %, 19 % et 13 %, soit 100 % au total.

ax.barh place la première catégorie en bas de l’axe, car l’axe des ordonnées croît vers le haut. Pour lire une liste classée à partir du haut, comme dans l’exemple des trajets domicile-travail, appelle ax.invert_yaxis() ou inverse à la fois les catégories et leurs valeurs avant le tracé, afin que chaque valeur reste associée à sa catégorie.

Les barres groupées placent plusieurs séries côte à côte dans chaque catégorie. Utilise des positions numériques et décale chaque série d’une demi-largeur de barre :

x = np.arange(3)
ax.bar(x - 0.2, north, width=0.4, label="North")
ax.bar(x + 0.2, coast, width=0.4, label="Coast")
ax.set_xticks(x, labels=["Jan", "Feb", "Mar"])
ax.legend()

. Les barres de North sont placées en −0,2, 0,8 et 1,8, celles de Coast en 0,2, 1,2 et 2,2, de part et d’autre de chaque graduation.

Les barres empilées représentent une deuxième série au-dessus de la première avec bottom= : ax.bar(days, car); ax.bar(days, bus, bottom=car). Si un jour compte 40 trajets en voiture et 25 en bus, le segment du bus va de 40 à 65 et la hauteur totale de la barre est de 65.

bars = ax.bar(...) renvoie un conteneur de barres ; ax.bar_label(bars) écrit chaque valeur à l’extrémité de sa barre. fmt contrôle le texte : fmt="%.1f" écrit 3,14 sous la forme « 3.1 », et fmt="{:.0f} km" l’écrit sous la forme « 3 km ».

Matplotlib dessine les barres dans l’ordre des données, et non par ordre de grandeur. Pour obtenir un diagramme classé, trie d’abord les valeurs, par exemple avec sorted() sur des paires ou sort_values() dans pandas. L’argument yerr= ajoute à chaque barre une barre d’erreur de longueur donnée, et ax.errorbar(x, y, yerr=...) fait de même pour des points.

Un diagramme en barres compare les valeurs de catégories distinctes : ses barres sont donc séparées par des espaces. Un histogramme, en revanche, montre la distribution d’une variable quantitative sur des intervalles adjacents, et ses barres se touchent. Représenter des mesures avec une barre par ligne de données produit un diagramme en barres de valeurs brutes, pas un histogramme.

Points clés

  • Lors du tri, conserve chaque catégorie associée à sa valeur.
  • Les barres groupées sont décalées autour des graduations des catégories.
  • Les barres empilées utilisent des bases cumulées.
  • Les étiquettes des barres sont associées au conteneur renvoyé.

1.4 Ajouter les libellés, définir les échelles et régler le style d’un graphique

Définis le texte avec ax.set_title("..."), ax.set_xlabel("...") et ax.set_ylabel("..."), ou en un seul appel : ax.set(title="Monthly rainfall", xlabel="Month", ylabel="Rainfall (mm)"). Indique l’unité dans le libellé de l’axe, par exemple « Précipitations (mm) » ou « Distance (km) », pour que chaque valeur graduée ait un sens.

Matplotlib choisit les bornes des axes à partir des données, en ajoutant une petite marge. Définis-les toi-même avec ax.set_xlim(1, 12) et ax.set_ylim(0, 120), ou fixe une seule borne avec ax.set_ylim(bottom=0). ax.set(xlim=(1, 12), ylim=(0, 120)) fait la même chose en un seul appel.

ax.set_xticks([1, 4, 7, 10]) choisit les positions des graduations, et ax.set_xticks([1, 2, 3], labels=["Jan", "Feb", "Mar"]) remplace aussi leurs libellés. Fais pivoter les libellés trop serrés avec ax.tick_params(axis="x", labelrotation=45). Les outils de formatage des graduations modifient la façon dont les valeurs sont écrites : ax.yaxis.set_major_formatter(PercentFormatter(xmax=1, decimals=0)), après importation de PercentFormatter depuis matplotlib.ticker, affiche la valeur 0,25 sous la forme « 25% ».

ax.set_yscale("log") place l’axe des ordonnées sur une échelle logarithmique, où des distances égales représentent des rapports égaux : l’écart de 10 à 100 a la même longueur que celui de 100 à 1 000. Cette échelle convient aux valeurs qui s’étendent sur plusieurs ordres de grandeur, comme les populations des villes. Un axe logarithmique ne peut pas représenter zéro ni les valeurs négatives.

ax.legend() place la légende là où elle recouvre le moins de points (loc="best", valeur par défaut pour la légende d’une zone de tracé). Choisis un emplacement avec loc="upper left", ajoute un titre avec title="Station" et répartis les éléments sur plusieurs colonnes avec ncols=2. ax.legend(bbox_to_anchor=(1.02, 1), loc="upper left") place la légende juste à l’extérieur du bord droit de la zone de tracé.

ax.grid(True, alpha=0.3) ajoute des lignes de grille discrètes aux graduations ; ax.grid(axis="y") ne dessine que les lignes horizontales, ce qui facilite la lecture de la hauteur des barres.

Les feuilles de style modifient l’aspect par défaut de tous les graphiques créés ensuite : plt.style.use("ggplot"). plt.style.available énumère les styles installés ; les styles proches de ceux de seaborn fournis avec Matplotlib portent par exemple le nom "seaborn-v0_8-whitegrid". Pour appliquer un style à un seul bloc de code, utilise with plt.style.context("ggplot"):.

Les paramètres par défaut individuels se trouvent dans plt.rcParams, par exemple plt.rcParams["font.size"] = 12 ou plt.rcParams["figure.figsize"] = (8, 4). Ils s’appliquent aux figures créées ensuite, et plt.rcdefaults() rétablit les paramètres par défaut de Matplotlib.

fig, ax = plt.subplots(figsize=(8, 4))
ax.plot([1, 2, 3, 4], [62, 48, 55, 40], marker="o", label="North")
ax.set(title="Monthly rainfall, January to April", xlabel="Month", ylabel="Rainfall (mm)", ylim=(0, 70))
ax.set_xticks([1, 2, 3, 4], labels=["Jan", "Feb", "Mar", "Apr"])
ax.legend()
ax.grid(axis="y", alpha=0.3)

.

Dans une figure comportant plusieurs zones de tracé, les fonctions pyplot comme plt.title ou plt.xlabel ne modifient que la zone courante, généralement la dernière créée : un titre peut donc apparaître sur le mauvais panneau. Pour éviter cela, appelle les méthodes de la zone de tracé voulue, par exemple axes[0].set_title(...).

Points clés

  • Le formatage des graduations modifie les libellés sans modifier les valeurs.
  • Sur une échelle logarithmique, des rapports égaux correspondent à des distances égales.
  • Les styles et rcParams définissent les paramètres par défaut des graphiques créés ensuite.
2

Tracer des graphiques directement à partir de pandas

Un tableau pandas contient souvent déjà les étiquettes et les valeurs nécessaires à un graphique. Ses méthodes de tracé utilisent ces étiquettes pour construire un graphique Matplotlib, que tu peux ensuite compléter avec les mêmes méthodes qu’un graphique construit à la main. Le travail important a souvent lieu avant le tracé : décider ce que représente une ligne, calculer le bon indicateur et organiser le tableau pour que les groupes, les séries et leur ordre correspondent à la question posée.

2.1 Utiliser la méthode plot de pandas

Construis le tableau large des précipitations avec une colonne par station :

import pandas as pd
wide = pd.DataFrame({
    "North": [62, 48, 55, 40],
    "Coast": [110, 95, 80, 60],
    "Valley": [20, 15, 30, 45]
}, index=pd.Index(["Jan", "Feb", "Mar", "Apr"], name="month"))

Chaque objet Series et DataFrame de pandas possède une méthode .plot qui dessine avec Matplotlib et renvoie la zone de tracé Matplotlib utilisée. df.plot(kind="bar") et df.plot.bar() sont deux formes du même appel. Les types sont "line" (par défaut), "bar", "barh", "hist", "box", "kde" ou "density", "area", "pie", "scatter" et "hexbin".

Par défaut, l’index devient l’axe des abscisses et chaque colonne de nombres devient une courbe, avec une légende construite à partir des noms des colonnes. Un objet Series représente ses valeurs en fonction de son index. Pour choisir les colonnes, passe x="month" et y="rain_mm", ou une liste comme y=["North", "Coast"].

Un tableau wide a pour index Jan, Feb, Mar, Apr et pour colonnes North [62, 48, 55, 40], Coast [110, 95, 80, 60] et Valley [20, 15, 30, 45], toutes exprimées en millimètres de précipitations. ax = wide.plot(marker="o", figsize=(8, 4), title="Monthly rainfall"); ax.set_ylabel("Rainfall (mm)") dessine trois courbes avec leurs libellés dans une zone de tracé, puis définit le libellé de l’axe des ordonnées avec une méthode Matplotlib ordinaire.

Arguments courants de .plot : title, xlabel, ylabel, xlim, ylim, figsize, color, legend=False, rot (rotation des libellés des graduations en degrés), grid=True et logy=True. ax= dessine dans une zone de tracé existante, par exemple l’un des panneaux de plt.subplots(1, 2), au lieu de créer une nouvelle figure.

subplots=True dessine chaque colonne dans sa propre zone de tracé et renvoie un tableau NumPy de zones de tracé au lieu d’une seule ; layout=(2, 2) les dispose dans une grille et sharey=True leur donne une même échelle d’ordonnées. Pour le tableau des trois stations, wide.plot(subplots=True, layout=(1, 3), sharey=True) donne un panneau par station.

Les nuages de points et les graphiques à classes hexagonales n’existent que pour les objets DataFrame et nécessitent à la fois x et y : days.plot.scatter(x="temp_c", y="rentals", c="rain_mm", colormap="viridis") colore les points selon les précipitations. Un objet Series ne propose pas de nuage de points : s.plot.scatter() déclenche donc une erreur. df.plot.hist(bins=5) et df.plot.box() donnent un histogramme et une boîte à moustaches pour chaque colonne de nombres.

s.plot.pie() dessine un secteur par valeur, dont la taille dépend de sa part dans le total. Un diagramme circulaire nécessitant un objet Series composé de parts positives ou nulles d’un même ensemble, une colonne d’effectifs comme s.value_counts() est une entrée typique.

Les diagrammes en barres de pandas traitent l’index comme des catégories et placent les barres aux positions 0, 1, 2, … quelles que soient les valeurs de l’index. Les graphiques en courbes utilisent les valeurs réelles de l’index lorsqu’il s’agit de nombres ou de dates. Une courbe et des barres pandas tracées sur la même zone de tracé ne sont donc alignées que si les abscisses de la courbe correspondent aux positions des barres, comme avec un index par défaut 0, 1, 2, … ; pour des années comme 2020 à 2023, la courbe se trouve très à droite des barres. Utilise les mêmes positions pour les deux lorsque tu les combines.

Avec un DatetimeIndex, .plot() place les dates sur l’axe des abscisses et les libelle automatiquement. Les données quotidiennes sont souvent plus lisibles après rééchantillonnage, par exemple en moyennes mensuelles avec s.resample("MS").mean().plot().

.plot ne trace que les colonnes de nombres. Si des nombres ont été lus comme du texte, par exemple parce qu’une colonne contient « 12 mm », la colonne est ignorée et, s’il ne reste aucune donnée numérique, pandas déclenche TypeError: no numeric data to plot. Convertis d’abord la colonne, par exemple avec pd.to_numeric(...).

Points clés

  • Par défaut, pandas trace les données numériques et utilise l’index.
  • Passe une zone de tracé avec ax= pour réutiliser un panneau.
  • Les sous-graphiques séparés renvoient un tableau de zones de tracé.
  • Les barres et les courbes numériques de pandas suivent des règles de positionnement différentes.

2.2 Organiser les données avant de tracer un graphique

Un graphique représente les valeurs présentes dans le tableau : calcule donc d’abord les indicateurs voulus. Exemple : un tableau long rain de 12 lignes, une par station et par mois, comporte les colonnes month, station et rain_mm. rain.groupby("station")["rain_mm"].mean() donne une moyenne par station : Coast 86,25 mm, North 51,25 mm et Valley 27,5 mm. L’ajout de .plot.bar() dessine trois barres.

Tracer les lignes brutes par erreur donne les mesures individuelles au lieu des moyennes demandées : rain.plot.bar(x="station", y="rain_mm") dessine 12 barres avec des noms de stations répétés au lieu de trois moyennes.

Trie avant le tracé pour obtenir des barres classées : means.sort_values(ascending=False).plot.bar() place la moyenne la plus élevée à gauche. Pour un graphique horizontal, means.sort_values().plot.barh() place la plus élevée en haut, car la première valeur est dessinée en bas.

s.value_counts() compte les occurrences de chaque catégorie et présente les effectifs du plus fréquent au moins fréquent. Pour les modes de transport « bus », « voiture », « bus », « vélo », « bus », « voiture », il donne bus 3, voiture 2, vélo 1, prêts pour .plot.bar(). Utilise .sort_index() ou .reindex([...]) lorsque les catégories ont un ordre naturel, comme les jours de la semaine.

Un DataFrame au format large, avec une colonne par série, donne dans pandas une courbe ou une couleur de barre par colonne. Remodèle un tableau long avec rain.pivot(index="month", columns="station", values="rain_mm"). Si une paire de valeurs d’index et de colonne apparaît plusieurs fois, pivot déclenche une erreur ; utilise alors pivot_table(..., aggfunc="mean") ou groupby(["month", "station"])["rain_mm"].mean().unstack().

pivot et pivot_table trient le nouvel index : les mois stockés sous forme de chaînes apparaissent donc par ordre alphabétique, Apr, Feb, Jan, Mar, et un graphique en courbes les parcourt alors dans le mauvais ordre. Rétablis l’ordre réel avec wide.reindex(["Jan", "Feb", "Mar", "Apr"]), ou stocke le mois sous forme de variable catégorielle ordonnée ou de numéro de mois avant le pivotement.

Sur un tableau large, wide.plot.bar() dessine des barres groupées, avec un groupe par étiquette d’index et une couleur par colonne, tandis que wide.plot.bar(stacked=True) empile les colonnes. La transposition wide.T.plot.bar() inverse les rôles : un groupe par station, une couleur par mois.

Pour obtenir les proportions au sein de chaque groupe, normalise un tableau de contingence : pd.crosstab(trips["region"], trips["mode"], normalize="index") divise chaque effectif par le total de sa ligne, de sorte que chaque ligne a pour somme 1. Si la région N compte deux trajets en voiture et un en bus, sa ligne donne voiture 0,67 et bus 0,33 (valeurs arrondies). .plot.bar(stacked=True) dessine alors des barres de même hauteur totale qui montrent la répartition des modes de transport dans chaque région.

seaborn fonctionne mieux avec des données au format long : une ligne par observation et une colonne par variable. wide.reset_index().melt(id_vars="month", var_name="station", value_name="rain_mm") reconvertit le tableau large de 4 × 3 en 12 lignes et trois colonnes, afin que station puisse servir à définir la couleur ou les facettes.

Points clés

  • Agrège les lignes avant de tracer l’indicateur demandé.
  • Une paire de valeurs de pivotement répétée nécessite une règle d’agrégation.
  • Le format large convient aux séries en colonnes ; le format long convient aux correspondances sémantiques.
  • Rétablis un ordre pertinent des catégories après le remodelage.
  • Normalise chaque ligne pour comparer les proportions des groupes.
3

Créer des graphiques statistiques avec seaborn

Les graphiques statistiques associent les colonnes d’un tableau à des caractéristiques visuelles et calculent souvent un indicateur lors du tracé. seaborn réalise ces deux tâches à l’aide d’arguments nommés. Un court appel peut représenter les groupes dans des couleurs différentes, calculer la moyenne d’observations répétées ou répartir un tableau en panneaux. Examine attentivement ces réglages par défaut : un graphique d’observations individuelles et un graphique de moyennes de groupes peuvent partir des mêmes lignes tout en répondant à des questions différentes.

3.1 Associer les colonnes aux caractéristiques visuelles des graphiques dans seaborn

seaborn est une bibliothèque de tracé construite sur Matplotlib qui utilise directement les DataFrame de pandas et calcule elle-même des indicateurs statistiques courants. Par convention, elle est importée avec import seaborn as sns. Un appel typique indique le tableau et ses colonnes : sns.scatterplot(data=days, x="temp_c", y="rentals").

Outre x et y, les colonnes peuvent être associées à d’autres caractéristiques visuelles (correspondances sémantiques) : hue définit la couleur, style le marqueur ou le motif des tirets, et size la taille des marqueurs ou l’épaisseur des lignes. seaborn choisit les couleurs et construit lui-même la légende. Une colonne hue catégorielle reçoit des couleurs distinctes ; une colonne de nombres reçoit un dégradé.

Chaque correspondance nécessite une colonne dans les données au format long. Avec le tableau long des précipitations, sns.lineplot(data=rain, x="month", y="rain_mm", hue="station", marker="o") dessine une courbe colorée par station avec une légende. Si hue désigne une colonne absente du tableau, seaborn déclenche une ValueError indiquant qu’il n’a pas pu interpréter la valeur.

Lorsque x contient des chaînes de caractères, seaborn place les catégories dans l’ordre de leur première apparition dans les données : les mois stockés sous la forme « Jan », « Feb », « Mar » dans cet ordre restent donc dans l’ordre du calendrier. Les fonctions par catégorie, comme barplot, boxplot et countplot, acceptent order=["Mon", "Tue", "Wed"] pour définir l’ordre des catégories, et hue_order définit l’ordre des groupes de couleurs dans toute fonction qui comporte hue. lineplot n’a pas d’argument order : pour y fixer l’ordre des noms de mois, transforme la colonne des abscisses en variable catégorielle ordonnée, par exemple avec pd.Categorical(rain["month"], categories=["Jan", "Feb", "Mar", "Apr"], ordered=True).

Les fonctions au niveau d’une zone de tracé, comme scatterplot, lineplot, histplot, boxplot, barplot et heatmap, dessinent dans une zone de tracé Matplotlib, acceptent ax= pour choisir cette zone et la renvoient. Les fonctions au niveau d’une figure, relplot, displot, catplot et lmplot, créent leur propre figure, peuvent la diviser en panneaux avec col et row, et renvoient un objet FacetGrid de seaborn.

Les fonctions au niveau d’une figure définissent les dimensions par panneau : height est la hauteur de chaque panneau en pouces et aspect son rapport largeur-hauteur, de sorte que chaque panneau mesure height × aspect pouces de large ; les valeurs par défaut sont 5 et 1. Comme ces fonctions créent leur propre figure, elles ne peuvent pas dessiner dans une zone de tracé existante : relplot, displot et catplot émettent un avertissement et ignorent ax=, tandis que lmplot le rejette avec une TypeError. Elles placent la légende à l’extérieur des panneaux.

sns.set_theme() applique l’apparence de seaborn à tous les graphiques créés ensuite, y compris ceux de Matplotlib seul : le style « darkgrid », le contexte « notebook » et la palette par défaut de seaborn. style peut valoir « darkgrid », « whitegrid », « dark », « white » ou « ticks » ; context peut valoir « paper », « notebook », « talk » ou « poster » et ajuste la taille des polices et l’épaisseur des lignes, par exemple d’une police de base de 12 points pour « notebook » à 18 points pour « talk ».

palette choisit les couleurs de hue, par exemple palette="colorblind", "Set2" ou "viridis". Dans seaborn 0.13, passer palette sans hue est une pratique dépréciée ; pour colorer les barres selon la catégorie, définis hue avec la même colonne que x et ajoute legend=False : sns.barplot(data=rain, x="station", y="rain_mm", hue="station", legend=False).

Le résultat peut être complété avec Matplotlib :

ax = sns.scatterplot(...)
ax.set(xlabel="Temperature (°C)", ylabel="Rentals per day", title="Rentals and temperature")

. Pour un résultat au niveau d’une figure, utilise les méthodes de la grille, comme g.set_axis_labels("Temperature (°C)", "Rentals per day"), et g.figure.suptitle("...") pour un titre général.

Points clés

  • Les correspondances sémantiques associent les colonnes aux caractéristiques visuelles.
  • Les fonctions au niveau d’une zone de tracé acceptent une zone existante.
  • Les fonctions au niveau d’une figure créent leurs propres panneaux et en définissent les dimensions.
  • Les thèmes influent sur les graphiques créés ensuite avec les deux bibliothèques.

3.2 Représenter les relations entre variables quantitatives

sns.scatterplot(data=days, x="temp_c", y="rentals", hue="weekday", size="rain_mm") dessine un point par ligne, dont la couleur et la taille sont définies par d’autres colonnes. Associer hue et style à une même colonne donne à chaque groupe une couleur et un marqueur distincts, ce qui reste lisible en niveaux de gris.

sns.lineplot agrège les données par défaut : lorsque plusieurs lignes partagent une même abscisse, la courbe passe par la moyenne de leurs ordonnées et une bande ombrée représente l’intervalle de confiance à 95 % de cette moyenne, calculé par bootstrap. Exemple détaillé : pour x = 1, les ordonnées sont 10, 12 et 14 ; pour x = 2, elles sont 20, 21 et 25. La courbe passe par 12 et 22.

La bande par défaut montre l’incertitude de chaque moyenne, pas l’étendue des données. errorbar="sd" ombre à la place une bande allant d’un écart-type sous la moyenne à un écart-type au-dessus ; errorbar=None supprime la bande, et estimator=None (avec units=) trace chaque série individuelle sans calculer de moyenne. Avec une seule ligne par abscisse, il n’y a pas de moyenne à calculer ni de bande.

sns.regplot(data=days, x="temp_c", y="rentals") dessine un nuage de points avec une droite des moindres carrés et une bande de confiance ombrée à 95 % pour cette droite ; order=2 ajuste à la place une courbe quadratique. sns.lmplot fait la même chose en tant que fonction au niveau d’une figure et peut donc aussi répartir les données selon hue, col ou row.

Une ligne ajustée synthétise les données selon le modèle choisi. Une droite peut être tracée sur des données qui suivent une courbe : examine donc les points autour de la droite avant de t’y fier. Une tendance marquée indique que les variables sont liées dans ces données, sans établir de cause.

sns.pairplot(df) dessine une grille avec un nuage de points pour chaque paire de colonnes de nombres et la distribution de chaque colonne sur la diagonale : des histogrammes par défaut, ou des courbes de densité lorsque hue est défini. Quatre colonnes de nombres donnent une grille de 4 × 4, soit 16 panneaux. corner=True ne garde que le triangle inférieur, et vars=[...] limite les colonnes. La fonction renvoie un PairGrid.

sns.jointplot(data=days, x="temp_c", y="rentals") dessine un nuage de points avec l’histogramme de chaque variable sur les bords ; kind="hex" remplace les points par des classes hexagonales, ce qui est utile pour les grands jeux de données.

sns.relplot(..., kind="scatter") et sns.relplot(..., kind="line") sont les versions au niveau d’une figure de scatterplot et lineplot ; le nuage de points est le type par défaut. Utilise-les lorsque la même relation doit être représentée dans un panneau distinct pour chaque groupe.

sns.regplot(data=days, x="temp_c", y="rentals") montre que les locations passent de 180 à 12 °C à environ 350 les jours les plus chauds, avec une corrélation d’environ 0,92. Le jour à 30 °C compte moins de locations (340) que celui à 27 °C (360), si bien que les points s’aplatissent en haut ; un ajustement quadratique (order=2) peut être comparé à la droite.

Points clés

  • Par défaut, les courbes seaborn représentent la moyenne des observations répétées.
  • Une bande de confiance décrit l’incertitude d’une estimation.
  • Utilise units sans estimateur pour conserver les trajectoires individuelles.
  • Examine les points ainsi que les lignes ajustées.
  • Les matrices de nuages de points comparent les variables et leurs distributions.

3.3 Comparer des groupes avec des graphiques par catégorie

Les fonctions par catégorie de seaborn placent chaque catégorie aux positions 0, 1, 2, … sur l’axe des catégories. Même les nombres sont traités comme des étiquettes : les années 2020, 2021 et 2023 sont dessinées à intervalles égaux, sans espace pour 2022. native_scale=True conserve un axe numérique avec les espacements réels.

sns.barplot(data=rain, x="station", y="rain_mm") dessine une barre par station, dont la hauteur est la moyenne des valeurs de ses lignes, avec une barre d’erreur représentant l’intervalle de confiance à 95 % de cette moyenne. Avec le tableau des précipitations, les barres valent Coast 86,25, North 51,25 et Valley 27,5 mm. estimator="median" ou estimator="sum" change l’indicateur ; errorbar="sd" ou errorbar=None modifie ou supprime les barres d’erreur.

sns.countplot(data=trips, x="mode") compte les lignes de chaque catégorie et ne nécessite aucune colonne de nombres ; sns.barplot calcule un indicateur sur une colonne de nombres. Utilise countplot pour répondre à « combien d’éléments », et barplot pour répondre à « combien en moyenne ».

sns.pointplot représente la moyenne de chaque groupe par un point accompagné d’une barre d’erreur et relie par une ligne les points de chaque groupe défini par hue. Il facilite la comparaison des changements entre catégories, par exemple les précipitations moyennes de trois stations pour chacun de quatre mois.

Une barre représentant une moyenne masque la dispersion et le nombre d’observations : une moyenne calculée sur 3 lignes paraît aussi solide qu’une moyenne calculée sur 300. Montrer les données est souvent préférable : sns.stripplot dessine chaque observation sous forme de point avec une légère perturbation aléatoire, et sns.swarmplot dispose les points de façon à éviter leur superposition. Un diagramme en points par catégorie peut être superposé à une boîte à moustaches ou à un diagramme en barres dans la même zone de tracé.

Avec hue, les diagrammes en barres, les boîtes à moustaches et les diagrammes en violon placent par défaut les groupes côte à côte dans chaque catégorie (décalage latéral). Les graphiques de points, les diagrammes en points par catégorie et les diagrammes en essaim dessinent les groupes à la même position, sauf si dodge=True est défini : leurs points peuvent donc se superposer. Définis l’ordre des catégories avec order=[...] et celui des groupes avec hue_order=[...].

L’orientation suit les données : place les catégories sur l’axe des ordonnées et les nombres sur l’axe des abscisses, sns.barplot(data=rain, x="rain_mm", y="station"), pour obtenir des barres horizontales dont les longs libellés restent lisibles. orient="y" (ou "h") indique explicitement cette orientation.

sns.catplot est la fonction au niveau d’une figure pour tous les graphiques par catégorie. Son kind peut valoir « strip » (par défaut), « swarm », « box », « violin », « boxen », « point », « bar » ou « count », et col ou row répartit le graphique en panneaux.

Points clés

  • Les diagrammes des effectifs comptent les lignes ; les diagrammes en barres synthétisent des valeurs numériques.
  • Les diagrammes en points par catégorie et en essaim montrent les observations.
  • Le décalage latéral sépare les groupes de couleurs au sein d’une catégorie.
4

Visualiser des distributions et des grilles de valeurs

Un graphique de distribution décrit un ensemble de mesures, tandis qu’une carte de chaleur décrit un tableau par des couleurs. Ces graphiques synthétisent de nombreuses valeurs : leurs réglages influent donc sur ce que tu peux y lire. Les bornes des classes déterminent quelles observations sont comptées ensemble ; les quartiles et les moustaches décrivent différentes parties d’un échantillon ; une échelle de couleurs associe les nombres à des teintes. Examine ces calculs avant d’interpréter l’image obtenue.

4.1 Représenter une distribution avec des histogrammes et des courbes de densité

Un histogramme découpe l’étendue d’une variable quantitative en intervalles adjacents appelés classes et dessine au-dessus de chaque classe une barre dont la hauteur est le nombre d’observations qu’elle contient. Il montre la forme d’une distribution : sa tendance centrale, sa dispersion, son éventuelle asymétrie, ainsi que les lacunes ou les valeurs inhabituelles.

counts, edges, patches = ax.hist(data, bins=5) dessine l’histogramme et renvoie l’effectif de chaque classe et les bornes des classes. Avec un entier, les classes ont la même amplitude entre le minimum et le maximum ; la valeur par défaut est de 10 classes. Chaque classe inclut sa borne gauche et exclut sa borne droite, sauf la dernière, qui inclut les deux.

Voici 20 durées de trajet domicile-travail, en minutes : 12, 15, 18, 20, 22, 22, 25, 27, 28, 30, 31, 33, 35, 38, 40, 42, 45, 50, 55, 62. Avec bins=5, les bornes sont 12, 22, 32, 42, 52 et 62, et les effectifs sont 4, 7, 4, 3 et 2. La valeur 22 appartient à la deuxième classe, car les classes excluent leur borne droite, et 62 est compté dans la dernière classe, car celle-ci l’inclut.

Le nombre et la position des classes modifient le graphique. Les mêmes 20 durées avec les bornes [10, 20, 30, 40, 50, 60, 70] donnent les effectifs 3, 6, 5, 3, 2 et 1. Trop peu de classes masquent la forme de la distribution ; trop de classes produisent un graphique en dents de scie avec de nombreuses classes presque vides. Essaie plusieurs réglages et privilégie des bornes rondes que les lecteurs peuvent interpréter, par exemple espacées de 10 minutes.

density=True dans Matplotlib, ou stat="density" dans seaborn, ajuste les barres pour que leur aire totale soit égale à 1 : chaque hauteur vaut effectif ÷ (n × amplitude de la classe). Pour les données de trajet réparties en cinq classes de 10 minutes, la hauteur de la deuxième barre est de 7 ÷ (20 × 10) = 0,035 par minute. Une hauteur de densité n’est pas une probabilité ; hauteur × amplitude de la classe donne la proportion d’observations dans la classe.

sns.histplot(data=commutes, x="minutes") dessine un histogramme avec seaborn ; bins et binwidth déterminent les classes. stat choisit la hauteur : « count » (par défaut), « probability » ou « proportion » (la somme des hauteurs vaut 1), « percent » (la somme des hauteurs vaut 100) et « density » (aire de 1). Pour les cinq classes de durées de trajet, « probability » donne 0,2, 0,35, 0,2, 0,15 et 0,1.

Pour comparer des groupes, sns.histplot(data=commutes, x="minutes", hue="mode") superpose un histogramme par groupe ; multiple="stack" les empile, multiple="dodge" les place côte à côte, et element="step" dessine des contours dont la superposition est plus lisible. Pour comparer équitablement des groupes d’effectifs différents, utilise stat="density", common_norm=False, qui ajuste l’aire de chaque groupe à 1.

Une estimation de densité par noyau est une courbe lisse qui estime la forme de la distribution ; l’aire sous la courbe vaut 1. sns.kdeplot(data=commutes, x="minutes") la dessine, et sns.histplot(..., kde=True) l’ajoute à un histogramme. Une valeur de bw_adjust supérieure à 1 rend la courbe plus lisse ; inférieure à 1, elle la rend plus détaillée.

Une courbe d’estimation de densité par noyau s’étend au-delà des valeurs minimale et maximale : elle peut donc montrer une densité en dessous de 0 minute pour des durées qui ne peuvent pas être négatives. cut=0 arrête la courbe aux bornes des données. Pour de petits échantillons, la courbe peut suggérer une forme que les données ne justifient pas.

Dans pandas, commutes["minutes"].plot.hist(bins=5, edgecolor="white") dessine un histogramme (10 classes par défaut), et df.hist() dessine un histogramme par colonne de nombres dans une grille. Dans seaborn, sns.displot est la version au niveau d’une figure : kind="hist" (par défaut), kind="kde" ou kind="ecdf", une fonction de répartition empirique indiquant pour chaque valeur la proportion d’observations inférieures ou égales à celle-ci.

Points clés

  • Les bornes de l’histogramme déterminent la classe de chaque observation.
  • Une densité représente une proportion par une aire.
  • Une estimation de densité par noyau lisse une distribution et dépend de la largeur de bande.
  • Normalise les groupes indépendamment pour comparer leurs formes.

4.2 Synthétiser et comparer des distributions avec des boîtes à moustaches

Une boîte à moustaches synthétise une distribution : la boîte s’étend du premier quartile (Q1) au troisième quartile (Q3), un trait à l’intérieur marque la médiane, les moustaches s’étendent vers les valeurs typiques minimale et maximale, et les points au-delà des moustaches sont dessinés un par un comme valeurs aberrantes possibles. L’écart interquartile IQR = Q3 − Q1 est la longueur de la boîte et couvre la moitié centrale des données.

Par défaut, Matplotlib, pandas et seaborn utilisent whis=1.5 : les bornes de détection des valeurs aberrantes sont Q1 − 1,5 × l’écart interquartile et Q3 + 1,5 × l’écart interquartile. Chaque moustache se termine à la valeur observée la plus extrême située à l’intérieur de sa borne, et non à la borne elle-même. Chaque valeur située au-delà des bornes est dessinée comme un point distinct.

Voici 11 délais de livraison, en minutes : 14, 16, 17, 18, 19, 20, 21, 22, 24, 25, 41. Matplotlib calcule Q1 = 17,5, médiane = 20 et Q3 = 23, donc l’écart interquartile vaut 5,5. Les bornes de détection des valeurs aberrantes sont 17,5 − 8,25 = 9,25 et 23 + 8,25 = 31,25. La moustache inférieure se termine à 14, la moustache supérieure à 25 et 41 est représenté par un point comme valeur aberrante.

Les quartiles dépendent de la méthode utilisée. Les bibliothèques de tracé utilisent l’interpolation linéaire entre les valeurs ordonnées, méthode par défaut de NumPy et pandas, qui donne 17,5 et 23 ci-dessus. La méthode manuelle qui consiste à prendre les médianes des moitiés inférieure et supérieure sans la médiane globale donne Q1 = 17 et Q3 = 24 pour les mêmes données. Les deux méthodes sont valides ; les petits écarts entre un calcul à la main et un graphique viennent de là.

Trace la synthèse avec la bibliothèque que tu utilises : ax.boxplot([north, coast], tick_labels=["North", "Coast"]) dans Matplotlib (l’argument s’appelait labels avant la version 3.9) ; rain.boxplot(column="rain_mm", by="station") dans pandas, qui ajoute aussi le titre général « Boxplot grouped by station » ; sns.boxplot(data=rain, x="station", y="rain_mm") dans seaborn, avec hue pour un second regroupement. whis=(0, 100) étend les moustaches jusqu’au minimum et au maximum, et showfliers=False masque les points correspondant aux valeurs aberrantes.

Des boîtes à moustaches placées côte à côte permettent de comparer les groupes d’un coup d’œil : compare les médianes, les longueurs des boîtes (la dispersion de la moitié centrale) et leur chevauchement. Une médiane proche d’une extrémité de la boîte ou une moustache beaucoup plus longue que l’autre indique une distribution asymétrique.

Une boîte ne montre que cinq nombres et les valeurs aberrantes. Elle ne montre pas le nombre d’observations, et des distributions de formes très différentes peuvent avoir la même boîte : une distribution à deux pics distincts et une autre à un seul pic peuvent avoir les mêmes Q1, médiane et Q3. Superposer les points avec sns.stripplot(data=rain, x="station", y="rain_mm", color="black", alpha=0.5) ou utiliser un diagramme en violon permet de le voir.

sns.violinplot(data=rain, x="station", y="rain_mm") dessine pour chaque groupe une courbe de densité symétrique, avec une petite boîte à moustaches à l’intérieur (inner="box", valeur par défaut) ; inner="quart" marque à la place les quartiles par des traits. Avec un hue à deux modalités, split=True place un groupe de chaque côté du violon. Comme une estimation de densité par noyau, le violon peut s’étendre au-delà des données ; cut=0 l’arrête au minimum et au maximum observés.

Un point repéré par la règle de 1,5 × l’écart interquartile est inhabituel par rapport au reste des données, ce qui justifie d’examiner sa valeur. Vérifie-le : il peut s’agir d’une erreur de saisie ou d’une valeur réelle et importante, comme une livraison retardée par la fermeture d’une route. Supprimer des points simplement parce que le graphique les signale fausse l’analyse.

Points clés

  • La longueur de la boîte est l’écart interquartile.
  • Les moustaches se terminent à des observations situées à l’intérieur des bornes de détection des valeurs aberrantes.
  • Les méthodes de calcul des quartiles peuvent différer.
  • Les valeurs masquées au-delà des moustaches restent dans les données sous-jacentes.
  • Les points et les diagrammes en violon révèlent des informations qu’une boîte masque.

4.3 Représenter une grille de valeurs par une carte de chaleur

Une carte de chaleur représente un tableau de nombres sous forme d’une grille de cellules colorées : les lignes et les colonnes correspondent à deux catégories ou variables réparties en classes, et la couleur de chaque cellule représente sa valeur. Elle convient à la recherche de structures dans les tableaux à double entrée, comme les visiteurs par jour et par moment de la journée, ainsi que dans les matrices de corrélation.

sns.heatmap(table) prend un tableau large, utilise son index comme libellés des lignes et ses colonnes comme libellés des colonnes, et ajoute une barre de couleurs en guise de légende. Le tableau provient généralement de pivot_table : visits.pivot_table(index="day", columns="slot", values="visitors", aggfunc="mean").

Un musée compte ses visiteurs par demi-journée. Samedi matin : 120 et 140, samedi après-midi : 200 ; dimanche matin : 90, dimanche après-midi : 160 ; lundi matin : 40, lundi après-midi : 70 et 90. Le tableau croisé dynamique des moyennes donne lundi 40 et 80, samedi 130 et 200, dimanche 90 et 160, pour le matin et l’après-midi. sns.heatmap(pt, annot=True, fmt=".0f", cmap="Blues") représente la cellule la plus fréquentée, le samedi après-midi, par la couleur la plus foncée. Le pivotement trie les jours par ordre alphabétique de leurs libellés (Mon, Sat, Sun) ; pt.reindex(["Sat", "Sun", "Mon"]) permettrait de rétablir l’ordre choisi.

annot=True écrit chaque valeur dans sa cellule, et fmt définit le format numérique. La valeur par défaut ".2g" garde deux chiffres significatifs : 43,25 est donc affiché sous la forme « 43 » et 1 234 sous la forme « 1.2e+03 ». Utilise fmt=".0f" pour les nombres entiers ou fmt=".2f" pour deux décimales ; fmt="d" ne fonctionne qu’avec des données de type entier et déclenche une ValueError pour les nombres à virgule flottante.

Une carte de chaleur des corrélations part de corr = df.corr(numeric_only=True), un tableau carré et symétrique dont les coefficients définis vont de −1 à 1. Les colonnes de nombres non constantes ont 1 sur la diagonale ; les corrélations des colonnes constantes ne sont pas définies. Dans pandas 2 et les versions ultérieures, numeric_only vaut False par défaut : df.corr() déclenche donc une erreur lorsque le tableau contient une colonne de texte. Trace la carte avec sns.heatmap(corr, annot=True, fmt=".2f", cmap="vlag", vmin=-1, vmax=1, center=0).

Voici huit jours avec la température (°C), les locations de vélos, les précipitations (mm) et le vent (km/h). La matrice de corrélation donne 0,92 pour la température et les locations, −0,82 pour les locations et les précipitations, 0,75 pour les précipitations et le vent, et −0,38 pour la température et le vent. Avec la palette « vlag », la paire fortement positive apparaît en rouge foncé, la paire fortement négative en bleu foncé et la faible corrélation entre température et vent dans une teinte pâle proche du blanc central.

Sans vmin et vmax, l’échelle de couleurs s’étend de la plus petite à la plus grande valeur du tableau : une même couleur peut donc représenter des valeurs différentes dans deux cartes de chaleur. Fixe les bornes pour comparer les cartes, et utilise vmin=-1, vmax=1 pour les corrélations. Une palette séquentielle comme « rocket » (valeur par défaut de seaborn), « viridis » ou « Blues » convient aux valeurs allant du bas au haut de l’échelle ; une palette divergente comme « vlag », « coolwarm » ou « RdBu_r », avec center placé à une valeur centrale pertinente, convient aux valeurs situées de part et d’autre d’une référence comme 0. Lorsque center est défini sans cmap, seaborn utilise la palette divergente « icefire ».

Options utiles : linewidths=0.5 dessine des traits fins entre les cellules, square=True rend les cellules carrées, cbar_kws={"label": "Visitors"} ajoute un libellé à la barre de couleurs, et les valeurs manquantes (NaN) restent vides. mask=np.triu(np.ones_like(corr, dtype=bool)) masque le triangle supérieur et la diagonale d’une matrice de corrélation, qui répètent le triangle inférieur.

Dans Matplotlib, im = ax.imshow(values, cmap="viridis"); fig.colorbar(im, ax=ax) dessine une carte de chaleur d’un tableau à 2 dimensions, avec la ligne 0 en haut ; « viridis » est la palette par défaut de Matplotlib. imshow libelle les axes avec les numéros de lignes et de colonnes : définis donc toi-même les noms avec ax.set_xticks(range(len(cols)), labels=cols). ax.pcolormesh est une solution possible lorsque les cellules ont des tailles différentes.

Un coefficient de corrélation ne mesure que la force d’une liaison linéaire. Une corrélation proche de 0 n’exclut pas une forte relation courbe, et une seule valeur aberrante peut fortement augmenter ou diminuer un coefficient. Examine les nuages de points correspondants, par exemple avec une matrice de nuages de points, avant d’interpréter une carte de chaleur des corrélations.

Points clés

  • Les couleurs d’une carte de chaleur représentent les valeurs du tableau.
  • Fixe les bornes de l’échelle de couleurs pour comparer plusieurs graphiques.
  • Les échelles de corrélation vont de −1 à 1.
  • Examine les nuages de points avant d’interpréter les corrélations.
5

Construire des figures à plusieurs panneaux, les annoter et les exporter

Une figure utile nécessite souvent plusieurs vues des mêmes données. Les panneaux permettent de comparer des groupes, les annotations relient une affirmation à une valeur précise et les paramètres d’exportation transforment le résultat en une image adaptée à sa destination. Garde la maîtrise de la figure tout au long de ce processus. L’objet qui contient tes graphiques contient aussi leurs dimensions globales et constitue le moyen le plus fiable d’enregistrer exactement le résultat que tu as construit.

5.1 Disposer plusieurs graphiques dans une figure

Les petits multiples sont un ensemble de graphiques du même type, chacun correspondant à un sous-ensemble des données, tracés avec les mêmes échelles et placés côte à côte pour permettre la comparaison. Dans Matplotlib, ils sont construits sous forme d’une grille de zones de tracé dans une même figure.

fig, axes = plt.subplots(2, 3, figsize=(12, 6)) renvoie une figure et un tableau NumPy de 2 × 3 zones de tracé. axes[0, 0] est le panneau en haut à gauche et axes[1, 2] celui en bas à droite. Avec une seule ligne ou une seule colonne, le tableau est unidimensionnel : plt.subplots(1, 3) donne donc axes[0], axes[1] et axes[2]. axes.flat parcourt tous les panneaux ligne par ligne.

Le tableau lui-même ne peut pas dessiner : axes.plot(...) déclenche AttributeError: 'numpy.ndarray' object has no attribute 'plot'. Sélectionne d’abord un panneau par son indice, comme dans axes[0, 1].plot(...).

sharex=True et sharey=True donnent à tous les panneaux les mêmes bornes en abscisse ou en ordonnée : des hauteurs égales représentent donc des valeurs égales dans tous les panneaux et seuls les panneaux extérieurs affichent les libellés des graduations. Sans axes partagés, chaque panneau adapte son échelle à ses propres données et une petite étendue peut paraître aussi grande qu’une grande.

fig, axes = plt.subplots(2, 2, sharey=True, layout="constrained"), puis for ax, (name, grp) in zip(axes.flat, rain.groupby("station")): ax.plot(grp["month_num"], grp["rain_mm"], marker="o"); ax.set_title(name). Les trois stations occupent trois des quatre panneaux ; axes[1, 1].axis("off") masque le quatrième, qui est vide.

Les libellés de panneaux voisins peuvent se chevaucher. layout="constrained" dans plt.subplots ou plt.figure ajuste automatiquement l’espacement ; fig.tight_layout(), appelé après le tracé, est l’ancienne solution. fig.suptitle("Monthly rainfall by station") ajoute un titre à toute la figure, et fig.supxlabel(...) et fig.supylabel(...) ajoutent des libellés d’axes partagés.

Panneaux de tailles différentes : plt.subplots(1, 2, gridspec_kw={"width_ratios": [2, 1]}) rend le panneau de gauche deux fois plus large que celui de droite. fig, axd = plt.subplot_mosaic([["top", "top"], ["left", "right"]]) renvoie un dictionnaire de zones de tracé, ici un panneau large axd["top"] au-dessus de deux panneaux plus petits.

Les graphiques pandas et les fonctions seaborn au niveau d’une zone de tracé peuvent remplir des panneaux choisis avec ax= : wide["North"].plot(ax=axes[0, 0]) ou sns.histplot(data=commutes, x="minutes", ax=axes[0, 1]). C’est ainsi que l’on combine des graphiques des trois bibliothèques dans une même figure.

Points clés

  • Sélectionne un élément du tableau de zones de tracé par son indice avant de dessiner.
  • Des échelles partagées facilitent la comparaison des panneaux.
  • La mise en page sous contraintes réserve de la place aux libellés.

5.2 Répartir les données en facettes avec seaborn

La répartition en facettes trace le même graphique pour chaque modalité d’une variable qualitative, chacune dans son propre panneau, avec des axes partagés. Les fonctions seaborn au niveau d’une figure le font avec col= (panneaux côte à côte), row= (panneaux empilés) et col_wrap= (passage à une nouvelle ligne après le nombre de colonnes indiqué).

sns.relplot(data=rain, x="month_num", y="rain_mm", col="station", col_wrap=2, kind="line", height=3, aspect=1.5) dessine trois panneaux, deux sur la première ligne et un sur la seconde. Chaque panneau mesure 3 pouces de haut et 3 × 1,5 = 4,5 pouces de large ; la figure mesure donc environ 9 × 6 pouces.

row et col combinés créent une grille avec un panneau par combinaison de modalités : deux saisons en lignes et trois stations en colonnes donnent 2 × 3 = 6 panneaux. col_wrap ne peut pas être combiné avec row.

Les mêmes arguments fonctionnent pour tous les types de graphiques : sns.displot(data=commutes, x="minutes", col="mode") donne un histogramme par mode de transport, et sns.catplot(data=rain, x="station", y="rain_mm", col="season", kind="box") donne des boîtes à moustaches par saison.

Par défaut, les panneaux partagent leurs axes des abscisses et des ordonnées, ce qui permet de comparer les hauteurs entre panneaux. Laisser chaque panneau adapter son échelle à ses propres données montre les détails des petits groupes, mais peut rendre trompeuse une comparaison visuelle entre panneaux. Avec relplot et displot, passe facet_kws={"sharey": False} ; catplot accepte directement sharey=False, et le passer aussi dans facet_kws déclenche une TypeError.

sns.FacetGrid construit directement la grille puis dessine dans chaque panneau : g = sns.FacetGrid(commutes, col="mode", height=3); g.map_dataframe(sns.histplot, x="minutes"); g.add_legend(). g.map(plt.scatter, "temp_c", "rentals") transmet les colonnes nommées comme arguments positionnels à une fonction de tracé.

Personnalise la grille avec ses méthodes : g.set_titles("{col_name}") définit les titres des panneaux à partir des noms des modalités, g.set_axis_labels("Month", "Rainfall (mm)") libelle tous les axes, et g.set(ylim=(0, 120)) applique un réglage de zone de tracé à chaque panneau. g.axes_dict["Coast"] ou g.axes.flat permet d’accéder aux zones de tracé individuelles, et g.figure.suptitle("Rainfall by station", y=1.02) ajoute un titre général au-dessus des panneaux.

hue et col répartissent tous deux les données selon une variable. hue superpose les groupes dans une même zone de tracé, ce qui facilite la comparaison directe de quelques groupes ; col les sépare, ce qui reste lisible lorsque les lignes ou les points se chevaucheraient ou lorsque les groupes sont nombreux. Les deux peuvent être utilisés simultanément, par exemple col="station", hue="season".

Les fonctions au niveau d’une figure ne dessinent pas dans une zone de tracé existante (relplot, displot et catplot ignorent ax= en émettant un avertissement, et lmplot le rejette) et n’acceptent pas figsize de Matplotlib : le passer déclenche une erreur. Définis les dimensions de la grille avec height et aspect. Pour placer un graphique à facettes à côté d’autres graphiques dans une figure Matplotlib, construis les panneaux avec plt.subplots et des fonctions au niveau d’une zone de tracé.

Points clés

  • Les facettes répartissent les lignes en panneaux selon les groupes.
  • Les dimensions des panneaux utilisent height et aspect.
  • Les méthodes de la grille personnalisent tout l’affichage.
  • Les graphiques au niveau d’une figure ne peuvent pas remplir une zone de tracé existante.

5.3 Ajouter des annotations et des lignes de référence

ax.text(x, y, "text") écrit du texte à un point donné en coordonnées des données, dans les mêmes unités que les valeurs représentées. ha (« left », « center », « right ») et va (« top », « center », « bottom ») alignent le texte sur ce point ; fontsize et color définissent son style.

Avec transform=ax.transAxes, les positions sont des fractions de la zone de tracé : (0 ; 0) est le coin inférieur gauche et (1 ; 1) le coin supérieur droit. ax.text(0.02, 0.95, "n = 20", transform=ax.transAxes, va="top") garde une note dans le coin supérieur gauche quelles que soient les données et les bornes. Un texte placé en coordonnées des données se déplace lorsque les bornes changent et peut se retrouver à l’extérieur de la zone de tracé.

ax.annotate("Wettest month", xy=(1, 110), xytext=(2, 115), arrowprops=dict(arrowstyle="->")) écrit le texte à la position xytext et dessine une flèche vers le point xy ; les deux sont par défaut en coordonnées des données. textcoords="offset points" fait de xytext un décalage par rapport à xy, en points, par exemple xytext=(10, 10) pour 10 points vers la droite et vers le haut.

Les lignes de référence traversent toute la zone de tracé : ax.axhline(50, color="gray", linestyle="--", label="Target") dessine une ligne horizontale à y = 50, et ax.axvline(...) une ligne verticale. ax.axvspan(6, 8, alpha=0.2) ombre la plage de x = 6 à x = 8, par exemple une période de vacances. ax.hlines(y, xmin, xmax) dessine des lignes horizontales sur une plage limitée.

Sur l’histogramme des 20 durées de trajet domicile-travail, la moyenne est de 650 ÷ 20 = 32,5 minutes et la médiane de 30,5 minutes. ax.axvline(32.5, color="black", linestyle="--"); ax.text(33.5, 6.5, "mean 32.5 min") marque la moyenne, située à droite de la médiane parce que quelques longs trajets la tirent vers le haut.

Valeurs des barres : ax.bar_label(bars, fmt="%.0f") ajoute des étiquettes aux barres renvoyées par ax.bar. Pour les barres dessinées par pandas ou seaborn, les barres sont stockées dans ax.containers : ax.bar_label(ax.containers[0]) ajoute donc les étiquettes de la première série. padding=3 éloigne les étiquettes de 3 points des extrémités des barres.

Les formes proviennent de matplotlib.patches : ax.add_patch(Rectangle((x, y), width, height, fill=False, edgecolor="red")) trace le contour d’une région en coordonnées des données, et Circle et Polygon fonctionnent de la même façon.

Le texte peut être calculé à partir des données avec des f-strings, afin que les libellés restent corrects lorsque les données changent : ax.text(..., f"mean {commutes['minutes'].mean():.1f} min"). Les annotations sont dessinées au-dessus des données ; place-les dans des zones vides et limite leur nombre pour qu’elles mettent en évidence les éléments importants.

Points clés

  • Les coordonnées des données ancrent le texte aux mesures.
  • Les coordonnées de la zone de tracé ancrent le texte au panneau.
  • Une annotation distingue le point visé de la position du texte.
  • Calcule les libellés qui évoluent à partir des données.

5.4 Enregistrer des figures pour des rapports et le Web

fig.savefig("rainfall.png") enregistre la figure ; l’extension du fichier détermine le format : PNG et JPEG sont des images matricielles constituées de pixels, tandis que SVG et PDF sont des images vectorielles constituées de formes. format="pdf" définit explicitement le format.

Les images matricielles ont un nombre fixe de pixels et deviennent floues lorsqu’on les agrandit ; les fichiers vectoriels restent nets à toute taille et conviennent aux rapports, à l’impression et aux documents. PNG est un bon format matriciel pour les graphiques sur le Web et dans les diapositives. La compression JPEG est avec perte et rend flous les traits fins et le texte : ce format convient donc mal aux graphiques.

Dimensions en pixels = dimensions de la figure en pouces × dpi (points par pouce). fig, ax = plt.subplots(figsize=(8, 5)), enregistré avec dpi=150, donne 8 × 150 sur 5 × 150 = 1 200 × 750 pixels. Sans dpi, savefig utilise la résolution propre de la figure, soit 100 dpi par défaut : la même figure mesure alors 800 × 500 pixels. Pour les formats vectoriels, le dpi ne touche que les parties matricielles intégrées.

La taille du texte et l’épaisseur des lignes sont définies en points (1 point = 1/72 pouce), par rapport aux dimensions de la figure en pouces. Augmenter le dpi ajoute des pixels sans modifier la taille apparente du texte par rapport au graphique ; agrandir figsize rend au contraire le texte relativement plus petit. Choisis figsize selon la taille d’affichage finale et dpi selon la netteté voulue.

bbox_inches="tight" réduit les marges vides et inclut les éléments qui dépassent de la figure, comme une légende placée hors de la zone de tracé ; l’image enregistrée est alors un peu plus petite ou plus grande que les dimensions de la figure × dpi. pad_inches=0.1 définit la marge conservée autour.

transparent=True enregistre sans arrière-plan, ce qui convient aux diapositives à fond coloré ; facecolor="white" impose un fond blanc, ce qui est utile lorsqu’un thème sombre de notebook risquerait autrement de se retrouver dans le fichier.

plt.savefig enregistre la figure courante : appelle-le donc avant un plt.show() bloquant. Une fois la fenêtre fermée, pyplot ne suit plus cette figure et un appel ultérieur à plt.savefig(...) enregistre une nouvelle figure vide. Dans un notebook Jupyter, pyplot libère aussi la figure à la fin de la cellule : plt.savefig dans une cellule ultérieure enregistre donc une image vide. Conserver la figure dans une variable évite ces deux problèmes : fig.savefig(...) fonctionne encore après plt.show() ou dans une cellule ultérieure du notebook.

Les résultats seaborn s’enregistrent de la même façon : un graphique au niveau d’une zone de tracé s’enregistre par sa figure, avec ax.figure.savefig("box.png", dpi=200), et une grille au niveau d’une figure avec g.savefig("facets.png", dpi=200), qui utilise par défaut des boîtes englobantes ajustées.

for name, grp in rain.groupby("station"):
    grp = grp.sort_values("month_num")
    fig, ax = plt.subplots(figsize=(6, 4))
    ax.plot(grp["month_num"], grp["rain_mm"], marker="o")
    ax.set(title=name, xlabel="Month", ylabel="Rainfall (mm)")
    fig.savefig(f"rain_{name}.png", dpi=150, bbox_inches="tight")
    plt.close(fig)

. Fermer chaque figure limite l’utilisation de la mémoire et évite l’avertissement concernant plus de 20 figures ouvertes.

Points clés

  • Enregistre l’objet figure que tu as construit.
  • Les dimensions en pouces multipliées par le dpi donnent les dimensions matricielles avant recadrage.
  • Les boîtes englobantes ajustées modifient les limites de l’image exportée.
  • Une exportation vectorielle conserve les formes.
  • Ferme chaque figure après son exportation en série.

Visualisation avec Matplotlib et seaborn : exemples

5 Leçons Interactives

1

Construire des graphiques avec les figures et les zones de tracé de Matplotlib

15 étapes
Construire, libeller et examiner une figure Matplotlib.
  1. 1
    IntroductionConstruire un graphique à la fois

    Une commande de tracé a besoin d’un endroit où dessiner. Matplotlib rend cet espace explicite : une figure contient une ou plusieurs zones de tracé, et chaque zone contient les marques et les libellés. Commence par une zone, puis utilise les mêmes objets pour ajouter des lignes, des points, des barres et des réglages utiles. Donner un nom à la figure et à chaque zone de tracé permet de modifier plus facilement le bon graphique lorsqu’un notebook s’étoffe ou qu’une figure contient plusieurs panneaux.

  2. 2
    ExplicationGarder une référence au canevas

    Une figure contient l’image complète. Une zone de tracé contient un graphique et ses axes de coordonnées. Crée explicitement les deux pour que les commandes suivantes aient une destination claire.

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots(figsize=(7, 4))
    

    La largeur et la hauteur sont en pouces. La variable ax désigne la zone de tracé à l’intérieur de fig ; c’est l’objet qui recevra la courbe et ses libellés.

  3. 3
    ExempleDessiner dans cette zone

    Ajoute une courte série de températures à la zone de tracé que tu viens de créer. Chaque paire devient un point de la courbe.

    ax.plot([1, 2, 3], [8, 11, 10])
    ax.set(title="Daily temperature",
           xlabel="Day", ylabel="Temperature (°C)")
    

    Appeler à nouveau ax.plot ajouterait une autre courbe dans cette même zone. Dans un script, plt.show() affiche la figure ; un notebook l’affiche normalement sous la cellule.

  4. 4
    DéfiCorriger un appel de titre

    L’appel ax.title("Daily temperature") déclenche une erreur indiquant que l’objet texte ne peut pas être appelé. Comment faut-il le modifier ?

    ---reveal---

    Utilise ax.set_title("Daily temperature"). L’attribut title de la zone de tracé est déjà un objet texte ; set_title est la méthode qui le modifie. L’équivalent pyplot est plt.title(...), mais il agit sur la zone de tracé courante.

  5. 5
    ExplicationGarder les observations appariées

    Une ligne relie les points dans l’ordre des données d’entrée. Si la colonne des distances contient 4, 1, 3 km dans cet ordre, la ligne recule avant d’avancer. Trie les observations complètes selon la distance, en conservant chaque altitude associée à sa distance d’origine.

    route = route.sort_values("distance_km")
    ax.plot(route["distance_km"], route["elevation_m"])
    

    Un nuage de points ne nécessite aucun ordre de liaison, car chaque marqueur représente une observation distincte.

  6. 6
    ExempleDonner une légende à chaque série

    Les styles de lignes et de marqueurs peuvent identifier les séries, tout comme la couleur. Ajoute un libellé lors du tracé, puis demande à la zone de tracé de construire sa légende.

    ax.plot([1, 2, 3], [4, 8, 7], "o--", label="East")
    ax.plot([1, 2, 3], [6, 7, 9], "s-", label="West")
    ax.legend(title="Site")
    

    Pour un nuage de points, des valeurs numériques dans c nécessitent une barre de couleurs pour expliquer leur dégradé. Diminue alpha lorsque des points superposés masquent l’échantillon.

  7. 7
    DéfiPrévoir un changement de taille

    Un marqueur de nuage de points utilise s=25. Tu le remplaces par s=100 en gardant la même forme de marqueur. Comment sa largeur change-t-elle ?

    ---reveal---

    La largeur double. L’aire a été multipliée par quatre, et les dimensions linéaires sont multipliées par la racine carrée de ce facteur. Dans un nuage de points, s est mesuré en points carrés ; l’interpréter comme une largeur conduirait à prévoir à tort une multiplication par quatre.

  8. 8
    ExplicationPlacer les catégories et les valeurs

    Les barres utilisent des positions de catégories distinctes. Commence avec un nombre par catégorie ; les chaînes deviennent des libellés régulièrement espacés dans l’ordre fourni. Un graphique horizontal laisse de la place aux noms longs.

    fig, ax = plt.subplots()
    bars = ax.barh(["Bus", "Rail", "Walk"], [48, 37, 25])
    ax.invert_yaxis()
    ax.bar_label(bars)
    

    L’inversion place la première catégorie en haut. Inverser les noms seuls associerait les valeurs aux mauvaises catégories.

  9. 9
    ExempleConstruire un empilement à partir de sa base

    Supposons que les trajets d’un jour de semaine comprennent 32 trajets en bus et 18 en train. Le deuxième segment de barre doit commencer au sommet du premier.

    ax.bar(["Weekday"], [32], label="Bus")
    ax.bar(["Weekday"], [18], bottom=[32], label="Rail")
    ax.legend()
    

    Le segment du train a une hauteur de 18 et se termine à 50. Si un troisième mode est ajouté, sa ligne de base est le total cumulé des deux segments déjà dessinés.

  10. 10
    DéfiPositionner les barres groupées

    Deux barres ont chacune une largeur de 0,4 et doivent être centrées ensemble sur la position de catégorie 1. Où placer leurs centres ?

    ---reveal---

    Utilise 0,8 et 1,2, soit une demi-largeur de chaque côté de la graduation. Leurs bords intérieurs se rejoignent à 1 et la paire est centrée sur la catégorie. Les positions 1 et 1,4 formeraient une paire de barres voisines, mais son centre global serait décalé par rapport à la graduation de la catégorie.

  11. 11
    ExplicationDistinguer les positions des libellés

    Les graduations marquent des positions de coordonnées ; leurs libellés sont les textes affichés à ces positions. Fournis les deux ensemble lorsque tu remplaces les positions numériques des mois par des noms.

    ax.set_xticks([1, 2, 3], labels=["Jan", "Feb", "Mar"])
    ax.set_ylabel("Rainfall (mm)")
    ax.grid(axis="y", alpha=0.3)
    

    Un outil de formatage modifie la façon dont les nombres existants sont affichés. Il ne change pas l’échelle des données : vérifie donc si les pourcentages sont stockés sous forme de fractions ou de nombres allant de 0 à 100.

  12. 12
    ExempleChoisir une échelle qui a un sens

    Des intervalles égaux sur une échelle linéaire représentent des différences égales. Des intervalles égaux sur une échelle logarithmique représentent des rapports égaux.

    ax.set_yscale("log")
    

    Les valeurs 5, 50 et 500 sont régulièrement espacées, car chacune est dix fois supérieure à la précédente. Zéro et les valeurs négatives ne peuvent pas apparaître sur une échelle logarithmique ordinaire. Les styles contrôlent l’apparence séparément : utilise un contexte de style lorsqu’une apparence différente doit s’appliquer à un seul bloc de code.

  13. 13
    DéfiAjouter un titre au panneau voulu

    Une figure à deux panneaux doit recevoir un titre sur son premier panneau, mais plt.title(...) modifie le second. Comment le code peut-il cibler le premier panneau de manière fiable ?

    ---reveal---

    Appelle axes[0].set_title(...). La zone de tracé désignée est explicite : l’état courant de pyplot ne décide donc plus de la destination. C’est important dès qu’une figure comporte plusieurs panneaux ou qu’une fonction auxiliaire crée ou sélectionne une autre zone de tracé.

  14. 14
    DéfiExpliquer une échelle de couleurs numérique

    Un nuage de points utilise la couleur des points pour la hauteur des précipitations et l’aire des marqueurs pour le nombre de locations. Sa légende nomme les stations, mais ne donne aucune échelle de couleurs numérique. Que manque-t-il à la figure ?

    ---reveal---

    Ajoute une barre de couleurs associée au résultat du nuage de points et libelle-la « Précipitations (mm) ». La légende des stations explique les groupes, tandis que la barre de couleurs explique les teintes numériques. Conserver l’objet renvoyé par le nuage de points permet à fig.colorbar d’utiliser la même correspondance que les points tracés.

  15. 15
    RécapitulatifVérifier le résultat obtenu

    Un graphique comporte un canevas, une zone de tracé et des objets graphiques associés à cette zone. Vérifie que chaque série conserve les paires d’observations voulues, que les libellés indiquent les variables et les unités, et que les correspondances numériques de couleurs ont une légende. Lorsqu’une modification touche le mauvais endroit, examine quelle zone de tracé a reçu l’appel de méthode. Lorsqu’une forme paraît incorrecte, examine l’ordre et les coordonnées des données avant de modifier son style.

2

Tracer des graphiques directement à partir de pandas

9 étapes
Préparer les valeurs et la structure voulues avant le tracé.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionUtiliser le tableau pour construire le graphique
  2. 2
    ExplicationUtiliser les étiquettes du tableau
  3. 3
    ExempleChoisir des colonnes de nombres
  4. 4
    DéfiAligner les courbes et les barres
  5. 5
    ExplicationCalculer les indicateurs avant le tracé
  6. 6
    ExempleChoisir un format pour la bibliothèque suivante
  7. 7
    DéfiCorriger une paire de pivotement répétée
  8. 8
    DéfiSynthétiser et remodeler ensemble
  9. 9
    RécapitulatifVérifier le résultat obtenu
3

Créer des graphiques statistiques avec seaborn

12 étapes
Relier les correspondances et les paramètres statistiques par défaut de seaborn au graphique.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionComprendre ce que calcule la fonction
  2. 2
    ExplicationAssocier les variables aux caractéristiques visuelles
  3. 3
    ExempleChoisir qui construit la disposition
  4. 4
    DéfiAdapter la fonction à la disposition
  5. 5
    ExplicationComprendre l’estimateur de la courbe
  6. 6
    ExempleConserver chaque trajectoire
  7. 7
    DéfiInterpréter une bande étroite
  8. 8
    ExplicationCompter les lignes ou synthétiser les valeurs
  9. 9
    ExempleMontrer les observations
  10. 10
    DéfiChoisir l’indicateur
  11. 11
    DéfiExpliquer les différences entre les barres
  12. 12
    RécapitulatifVérifier le résultat obtenu
4

Visualiser des distributions et des grilles de valeurs

12 étapes
Passer des observations aux distributions et aux grilles colorées.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionLire attentivement les données synthétisées
  2. 2
    ExplicationCompter correctement les observations d’une classe
  3. 3
    ExempleConvertir un effectif en densité
  4. 4
    DéfiComparer des classes d’amplitudes différentes
  5. 5
    ExplicationConstruire les bornes à partir de la boîte
  6. 6
    ExempleTrouver l’extrémité observée de la moustache
  7. 7
    DéfiExaminer ce que cache une boîte identique
  8. 8
    ExplicationPartir de la grille de nombres
  9. 9
    ExempleFixer le sens des couleurs
  10. 10
    DéfiExaminer des teintes identiques
  11. 11
    DéfiExaminer ensemble deux synthèses
  12. 12
    RécapitulatifVérifier le résultat obtenu
5

Construire des figures à plusieurs panneaux, les annoter et les exporter

16 étapes
Disposer les panneaux, ancrer les annotations et exporter le résultat.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionPréparer une figure à partager
  2. 2
    ExplicationCréer des panneaux accessibles par indice
  3. 3
    ExempleRemplir la grille avec les groupes
  4. 4
    DéfiComparer les échelles équitablement
  5. 5
    ExplicationLaisser seaborn répartir le tableau
  6. 6
    ExemplePersonnaliser toute la grille
  7. 7
    DéfiModifier le partage avec le bon argument
  8. 8
    ExplicationChoisir l’ancrage du texte
  9. 9
    ExempleAssocier un libellé à un maximum
  10. 10
    DéfiGarder un libellé correct après filtrage
  11. 11
    ExplicationChoisir les dimensions avant les pixels
  12. 12
    ExempleEnregistrer la figure conservée
  13. 13
    DéfiCombiner les choix de disposition et d’exportation
  14. 14
    DéfiTerminer un traitement en série reproductible
  15. 15
    ConseilExaminer le résultat enregistré
  16. 16
    RécapitulatifVérifier le résultat obtenu

Visualisation avec Matplotlib et seaborn : QCM

50 Questions Pratiques en 5 séries

Série 1 : Appliquer les choix de tracé à de nouvelles données10 Questions Pratiques

Question 1 sur 10

Quel système de coordonnées garde une note près du coin supérieur gauche d’un panneau lorsque les bornes des données changent ?
  1. Les unités de la variable x
  2. Les unités de la variable y
  3. Les coordonnées de la zone de tracé
  4. Les coordonnées des données
Afficher la réponseMasquer la réponse
Réponse : C
Les coordonnées de la zone de tracé décrivent des fractions de cette zone : une position proche de (0 ; 1) reste donc près du coin supérieur gauche. Les coordonnées des données décrivent des valeurs de mesure et se déplacent donc à l’écran lorsque les bornes changent, ce qui est utile pour libeller une observation particulière.

Question 2 sur 10

Dans ax.scatter(x, y, s=64), que précise 64 ?
  1. L’aire des marqueurs en points carrés
  2. La largeur des marqueurs en points
  3. L’opacité des marqueurs en pourcentage
  4. Le rayon des marqueurs en points
Afficher la réponseMasquer la réponse
Réponse : A
L’argument s du nuage de points contrôle l’aire des marqueurs en points carrés. Ce n’est ni une largeur ni un rayon : multiplier l’aire par quatre multiplie les dimensions linéaires d’un marqueur par deux, à forme de marqueur identique.

Question 3 sur 10

Avec les bornes [0, 5, 10, 15], quelle classe contient la valeur 5 ?
  1. Aucune classe, car c’est une borne
  2. Les deux classes qui touchent 5
  3. La classe de 0 à moins de 5
  4. La classe de 5 à moins de 10
Afficher la réponseMasquer la réponse
Réponse : D
Les classes internes incluent leur borne gauche et excluent leur borne droite : 5 entre donc dans la classe qui commence à 5. Le compter dans les deux classes adjacentes compterait une observation deux fois. Seule la dernière classe inclut aussi sa borne droite.

Question 4 sur 10

Une boîte a Q1 = 12 et Q3 = 20. Les valeurs observées au-dessus de Q3 sont 24, 30 et 35. Où se termine la moustache supérieure par défaut ?
  1. 24
  2. 30
  3. 32
  4. 35
Afficher la réponseMasquer la réponse
Réponse : B
L’écart interquartile est de 8 : la borne supérieure de détection des valeurs aberrantes est donc 20 + 1,5 × 8 = 32. La plus grande valeur observée à l’intérieur de cette borne est 30 : c’est l’extrémité de la moustache. La borne calculée à 32 est un seuil, pas une valeur qui doit apparaître dans les données.

Question 5 sur 10

Un graphique stocke les proportions sous forme de fractions et comporte une valeur cible à 75 %. Quelle combinaison place correctement la cible et libelle l’axe des ordonnées en pourcentages ?
  1. ax.axhline(0.75) et PercentFormatter(xmax=100)
  2. ax.axhline(0.75) et PercentFormatter(xmax=1)
  3. ax.axhline(75) et PercentFormatter(xmax=100)
  4. ax.axhline(75) et PercentFormatter(xmax=1)
Afficher la réponseMasquer la réponse
Réponse : B
La cible stockée doit utiliser la même échelle de fractions que les données : trace-la donc à 0,75. Un outil de formatage des pourcentages avec xmax=1 affiche alors cette coordonnée sous la forme 75%. Placer la ligne à 75 change sa position numérique ; le formatage ne peut pas corriger cette différence de coordonnées.

Question 6 sur 10

Un tableau de parcours contient les distances [4, 1, 3] km et les altitudes appariées [90, 40, 75] m. Quel ordre une courbe qui avance doit-elle suivre ?
  1. (1, 40), (3, 75), (4, 90)
  2. (1, 90), (3, 40), (4, 75)
  3. (1, 40), (4, 90), (3, 75)
  4. (4, 90), (1, 40), (3, 75)
Afficher la réponseMasquer la réponse
Réponse : A
Trie les observations selon la distance et garde chaque altitude associée à sa distance d’origine. Cela donne (1 ; 40), (3 ; 75) et (4 ; 90). Trier la liste des distances seule associerait les mauvaises altitudes aux nouvelles positions.

Question 7 sur 10

Des mesures ont été prises en 2017, 2018 et 2022. Un graphique seaborn par catégorie les espace régulièrement. Qu’est-ce qui conserve les écarts réels ?
  1. sharey=True
  2. errorbar=None
  3. dodge=True
  4. native_scale=True
Afficher la réponseMasquer la réponse
Réponse : D
L’échelle native conserve les coordonnées numériques : l’écart de quatre ans entre 2018 et 2022 est donc plus large que l’écart d’un an qui le précède. Le décalage latéral sépare les groupes de couleurs à l’intérieur d’une catégorie ; il ne remplace pas les positions de catégories par l’échelle numérique d’origine.

Question 8 sur 10

Un graphique à facettes comporte deux modalités en lignes et quatre modalités en colonnes. Combien de panneaux crée-t-il ?
  1. 8
  2. 6
  3. 4
  4. 2
Afficher la réponseMasquer la réponse
Réponse : A
Une grille de facettes en lignes et en colonnes comporte un panneau pour chaque combinaison de modalités, soit 2 × 4 = 8 panneaux. Additionner les nombres de modalités donne six, mais oublie des combinaisons : chacune des deux lignes a besoin des quatre colonnes.

Question 9 sur 10

Une région compte 9 trajets en train et 3 à pied ; une autre compte 12 trajets en train et 12 à pied. Tu veux comparer la répartition des modes de transport avec des barres empilées de même hauteur. Quelles doivent être les proportions des segments représentant le train ?
  1. 0,30 et 0,40
  2. 0,43 et 0,57
  3. 0,75 et 0,50
  4. 9,00 et 12,00
Afficher la réponseMasquer la réponse
Réponse : C
Normalise au sein de chaque région : la première proportion de trajets en train est de 9 sur 12, soit 0,75, et la seconde de 12 sur 24, soit 0,50. Diviser par l’effectif total des deux régions comparerait les contributions à l’ensemble des trajets : les barres n’auraient alors plus chacune une somme égale à un.

Question 10 sur 10

Un rapport nécessite une image PNG de 900 × 600 pixels avec une légende extérieure entièrement visible. Le canevas prévu mesure 6 × 4 pouces. Quelle méthode maîtrise le mieux les dimensions et le risque de couper la légende ?
  1. Utiliser 100 dpi, réserver de la place à la légende dans le canevas et enregistrer sans recadrage ajusté.
  2. Utiliser 150 dpi, réserver de la place à la légende dans le canevas et enregistrer sans recadrage ajusté.
  3. Utiliser 150 dpi, placer la légende au-delà du canevas et enregistrer sans recadrage ajusté.
  4. Utiliser 150 dpi, placer la légende au-delà du canevas et imposer un recadrage ajusté pour conserver sa taille.
Afficher la réponseMasquer la réponse
Réponse : B
À 150 dpi, un canevas de 6 × 4 pouces donne 900 × 600 pixels. Réserve une partie du canevas à la légende, à l’extérieur de la zone de tracé mais à l’intérieur de la figure, pour qu’elle y tienne sans être coupée. Une boîte englobante ajustée peut inclure une légende située au-delà du canevas, mais elle peut aussi modifier les dimensions finales en pixels.
Série 2 : Lire les graphiques et vérifier les bases10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Avec le moteur Matplotlib par défaut, que renvoie df.plot(y="depth_mm") lorsqu’il dessine un panneau ?
  1. Un objet FacetGrid de seaborn
  2. Une zone de tracé Matplotlib
  3. Un objet Series de pandas
  4. Une figure Matplotlib
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Avec plt.subplots(2, 3), comment sélectionner le panneau inférieur droit ?
  1. axes[2, 3]
  2. axes[1, 3]
  3. axes[2, 1]
  4. axes[1, 2]
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Tu veux connaître le nombre d’observations dans chaque catégorie de matériel. Quel graphique seaborn fournit directement ce nombre ?
  1. Un diagramme des effectifs par catégorie
  2. Un graphique de points des valeurs moyennes
  3. Un diagramme en barres des moyennes
  4. Une boîte à moustaches des mesures
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Les proportions d’un axe des ordonnées sont stockées sous forme de fractions. Quel réglage de formatage affiche 0,32 sous la forme « 32% » ?
  1. PercentFormatter(xmax=0.32)
  2. PercentFormatter(xmax=32)
  3. PercentFormatter(xmax=1)
  4. PercentFormatter(xmax=100)
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Que décrit la bande ombrée par défaut autour d’une courbe de moyennes seaborn ?
  1. L’étendue complète des valeurs enregistrées
  2. L’incertitude des moyennes estimées
  3. La moitié centrale de toutes les observations
  4. Un écart-type de toutes les observations
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Des mesures de capteurs se répètent pour chaque paire station-heure. Quelle opération donne une moyenne par paire dans un tableau large par station et par heure ?
  1. pivot_table(..., aggfunc="mean")
  2. value_counts() sur les noms des stations
  3. melt(...) avec les identifiants des stations
  4. pivot(...) sans agrégation
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Tu veux des panneaux distincts de boîtes à moustaches par catégorie, avec des échelles d’ordonnées indépendantes. Quelle configuration seaborn au niveau d’une figure convient ?
  1. catplot(kind="box", col="site", facet_kws={"sharey": False})
  2. boxplot(col="site", sharey=False)
  3. catplot(kind="box", row="site", col_wrap=2)
  4. catplot(kind="box", col="site", sharey=False)
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Un diagramme en points par catégorie utilise la couleur pour distinguer les équipes de travail, mais les deux équipes occupent la même position dans chaque catégorie. Qu’est-ce qui place les groupes côte à côte ?
  1. Définir native_scale=True.
  2. Définir jitter=False.
  3. Définir dodge=True.
  4. Définir errorbar=None.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Un tableau croisé dynamique de moyennes contient des valeurs à virgule flottante comme 26,0. Quel format de carte de chaleur affiche des étiquettes sans décimales sans changer leur type de données ?
  1. fmt=".2f"
  2. fmt="d"
  3. fmt=".0f"
  4. fmt=".0g"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Les mesures sont de 8, 12, 16 et 24 minutes. Un filtre supprime les mesures d’au moins 20 minutes. Une ligne de moyenne doit correspondre aux lignes restantes, et une note indiquant l’effectif doit rester dans le coin supérieur gauche du panneau lorsque les bornes changent. Que doit utiliser la figure mise à jour ?
  1. Une ligne de moyenne à 15 et une note « n = 3 » en coordonnées de la zone de tracé.
  2. Une ligne de moyenne à 12 et une note « n = 3 » en coordonnées des données.
  3. Une ligne de moyenne à 12 et une note « n = 4 » en coordonnées de la zone de tracé.
  4. Une ligne de moyenne à 12 et une note « n = 3 » en coordonnées de la zone de tracé.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 3 : Relier tableaux, indicateurs et graphiques10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Un graphique en courbes seaborn utilise les réglages par défaut et comporte des mesures répétées pour une même abscisse x. Que montre la courbe à cette abscisse ?
  1. La somme des ordonnées
  2. La médiane des ordonnées
  3. La première ordonnée enregistrée
  4. La moyenne des ordonnées
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Que fait un second appel à ax.plot(...) sur une zone de tracé existante ?
  1. Il remplace la courbe précédente.
  2. Il crée une seconde zone de tracé.
  3. Il ajoute une autre série.
  4. Il efface les libellés des axes.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Un notebook crée et conserve fig dans une cellule. Une cellule ultérieure doit enregistrer exactement ce graphique après que pyplot l’a libéré. Quel appel est fiable ?
  1. fig.savefig("chart.png")
  2. plt.savefig("chart.png")
  3. plt.show("chart.png")
  4. plt.figure().savefig("chart.png")
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Un graphique empilé comporte un segment de base de 28 et un deuxième segment de 17. Quels sont la base et le sommet du deuxième segment ?
  1. Base 0 ; sommet 17
  2. Base 28 ; sommet 45
  3. Base 28 ; sommet 17
  4. Base 17 ; sommet 45
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Une fonction auxiliaire appelle plt.title("Depth") après avoir créé une seconde figure. Le titre doit appartenir à la zone de tracé de la première figure, conservée sous le nom first_ax. Comment faut-il définir le titre ?
  1. first_ax.title("Depth")
  2. first_ax.set_title("Depth")
  3. plt.figure().suptitle("Depth")
  4. plt.title("Depth") après la fonction auxiliaire
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Un délai de livraison dépasse la borne supérieure de détection des valeurs aberrantes d’une boîte à moustaches. Que dois-tu faire avant de le supprimer ?
  1. Le supprimer, car la borne marque les données invalides.
  2. Le remplacer par l’extrémité de la moustache supérieure.
  3. Vérifier si le délai enregistré est valide.
  4. Ne garder que les valeurs dans l’écart interquartile.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Une flèche doit pointer vers (8 ; 42), avec un texte 12 points au-dessus. Que doivent valoir xy et xytext avec textcoords="offset points" ?
  1. xy=(8, 42), xytext=(0, 12)
  2. xy=(8, 42), xytext=(8, 54)
  3. xy=(8, 54), xytext=(0, 12)
  4. xy=(0, 12), xytext=(8, 42)
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Deux groupes comptent 40 et 200 observations. Une classe de cinq minutes contient 10 observations du premier groupe et 20 du second. Chaque histogramme doit avoir une aire égale à un. Quelles doivent être les hauteurs de densité de cette classe et quel réglage de normalisation faut-il utiliser ?
  1. 0,25 et 0,10 par minute ; common_norm=False.
  2. 0,05 et 0,02 par minute ; common_norm=True.
  3. 0,01 et 0,02 par minute ; common_norm=True.
  4. 0,05 et 0,02 par minute ; common_norm=False.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Un objet Series indexé par les années 2018, 2020 et 2024 est représenté par des barres pandas. Une courbe utilisant ces années comme nombres est ajoutée à la même zone de tracé. Comment aligner les deux séries tout en conservant les années comme libellés ?
  1. Convertir seulement les hauteurs des barres en tableau de nombres avant le tracé.
  2. Tracer les deux aux positions 0, 1, 2 et libeller ces graduations avec les années.
  3. Trier les deux séries par année et conserver leurs coordonnées existantes.
  4. Définir des bornes d’ordonnées identiques et conserver les coordonnées existantes.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Une image PNG de 6 × 3 pouces à 100 dpi utilise des libellés de 12 points dont la taille paraît correcte par rapport au graphique. Tu as besoin de 1 200 × 600 pixels et conserveras une police de 12 points. Quelles dimensions et quelle résolution de figure préservent les proportions des libellés ?
  1. 6 × 3 pouces à 200 dpi.
  2. 12 × 6 pouces à 100 dpi.
  3. 6 × 3 pouces à 100 dpi.
  4. 12 × 6 pouces à 200 dpi.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 4 : Diagnostiquer les réglages et les comparaisons de graphiques10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Une figure comporte trois panneaux de tracé. Combien de zones de tracé contient-elle ?
  1. Trois
  2. Une
  3. Six
  4. Deux
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Un tableau contient une ligne par trajet et une colonne mode. Qu’est-ce qui produit le nombre de trajets par mode ?
  1. trips["mode"].sort_values()
  2. trips["mode"].unique()
  3. trips["mode"].value_counts()
  4. trips["mode"].drop_duplicates()
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Un tableau long comporte height_cm, mass_kg et species. Comment un nuage de points peut-il identifier les espèces à la fois par la couleur et par la forme des marqueurs ?
  1. Associer l’espèce à la taille et à y.
  2. Associer l’espèce à la couleur et à la taille.
  3. Associer l’espèce à x et au style.
  4. Associer l’espèce à la couleur et au style.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Un graphique en courbes utilise des noms de mois textuels apparaissant dans l’ordre « May », « Mar », « Apr ». Tu veux l’ordre du calendrier et une courbe par site. Quel changement convient ?
  1. Passer l’ordre des mois à lineplot et associer le site à la couleur.
  2. Rendre les mois catégoriels ordonnés et associer le site à la couleur.
  3. Trier les mois par ordre alphabétique et associer le site à la couleur.
  4. Associer les mois à la couleur et trier les sites par ordre alphabétique.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Deux séries ont des barres de largeur 0,3 et doivent être placées côte à côte, centrées ensemble en x = 2. Où doivent se trouver leurs centres ?
  1. 1,7 et 2,3
  2. 2,0 et 2,3
  3. 1,85 et 2,15
  4. 1,85 et 2,3
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Une facette a une hauteur de 4 pouces et un rapport largeur-hauteur de 1,25. Quelle est la largeur de ce panneau ?
  1. 5 pouces
  2. 3,2 pouces
  3. 4 pouces
  4. 1,25 pouce
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Deux échantillons ont les mêmes quartiles et les mêmes extrémités de moustaches, mais des amas d’observations différents. Quel affichage peut révéler la différence et pourquoi ?
  1. Masquer les points au-delà des moustaches pour révéler les amas manquants.
  2. Augmenter la largeur des boîtes pour représenter les amas.
  3. Fixer les bornes des ordonnées pour différencier les boîtes.
  4. Superposer des diagrammes en points par catégorie pour révéler les valeurs individuelles.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Un graphique horizontal classé doit afficher les valeurs 52, 31 et 19 de haut en bas. Les paires nom-valeur d’origine sont A–31, B–19, C–52. Quelle préparation et quel réglage de l’axe permettent d’obtenir ce résultat ?
  1. Trier les paires par ordre croissant, les tracer, puis inverser l’axe des ordonnées.
  2. Trier les paires par ordre décroissant, les tracer, puis inverser l’axe des ordonnées.
  3. Trier les paires par ordre décroissant, les tracer, puis inverser l’axe des abscisses.
  4. Trier les noms par ordre décroissant, garder les valeurs fixes, puis tracer les barres.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Deux classes adjacentes ont des amplitudes de 2 et 4 et contiennent chacune 10 observations dans un échantillon de 50. Avec une échelle de densité, quelles sont leurs hauteurs et leurs aires ?
  1. Hauteurs 0,05 et 0,10 ; aires 0,10 et 0,40
  2. Hauteurs 0,10 et 0,05 ; aires 0,20 et 0,20
  3. Hauteurs 0,10 et 0,10 ; aires 0,20 et 0,40
  4. Hauteurs 0,20 et 0,20 ; aires 0,40 et 0,80
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Un rapport nécessite les tendances de trois sites dans une grille de 2 × 2, comparables en millimètres. Les lignes arrivent dans un ordre de mois mélangé. Quelle construction évite les courbes qui reviennent en arrière, les hauteurs de panneaux trompeuses et un panneau vide visible ?
  1. Trier chaque site par mois, partager les bornes des ordonnées et masquer la zone de tracé inutilisée.
  2. Trier chaque site par mois, partager les bornes des ordonnées et répéter un site dans la zone de tracé inutilisée.
  3. Trier chaque site par mois, ajuster chaque axe des ordonnées et masquer la zone de tracé inutilisée.
  4. Trier chaque site par profondeur, partager les bornes des ordonnées et masquer la zone de tracé inutilisée.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 5 : Résoudre des problèmes de tracé et d’exportation10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Quel type de fonction seaborn peut dessiner dans une zone de tracé Matplotlib existante choisie ?
  1. Un constructeur PairGrid
  2. Une fonction au niveau d’une zone de tracé
  3. Une fonction au niveau d’une figure
  4. Un constructeur FacetGrid
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Sur un axe des ordonnées logarithmique, un point passe de 3 à 30. Quel déplacement correspond à la même distance verticale ?
  1. De 30 à 300
  2. De 30 à 57
  3. De 30 à 130
  4. De 30 à 60
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Une colonne de profondeurs contient des chaînes comme « 15 mm » et pandas l’ignore lors du tracé. Quelle correction est utile ?
  1. Donner au graphique un libellé contenant le texte de l’unité.
  2. Augmenter la largeur de la figure et faire pivoter les libellés des graduations.
  3. Remplacer le graphique en courbes par des barres horizontales.
  4. Retirer le texte de l’unité et convertir les valeurs en nombres.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Un échantillon de 40 valeurs comporte 12 observations dans une classe de 6 minutes d’amplitude. Quelle est la hauteur de densité de cette classe ?
  1. 0,15 par minute
  2. 2,00 par minute
  3. 0,05 par minute
  4. 0,30 par minute
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Une droite ajustée est globalement ascendante, mais les points montent fortement au début puis se stabilisent. Qu’est-ce qui doit guider la suite de l’examen ?
  1. Masquer les points et juger l’ajustement d’après sa seule pente.
  2. Interpréter la bande de confiance comme contenant toutes les observations possibles.
  3. Considérer la droite comme la preuve d’un taux constant partout.
  4. Examiner la courbure et comparer l’ajustement linéaire à un ajustement courbe.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Une carte de chaleur des corrélations comporte un coefficient proche de zéro, mais le nuage de points correspondant montre clairement une forme en U. Comment interpréter cette paire de variables ?
  1. Il n’y a aucune relation puisque le coefficient est proche de zéro.
  2. Il existe une relation courbe avec une faible liaison linéaire.
  3. Il existe une forte relation linéaire positive sur toute l’étendue.
  4. Il existe une forte relation linéaire négative sur toute l’étendue.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Trois graphiques de stations utilisent des bornes d’ordonnées automatiques distinctes. Un changement de 4 mm paraît aussi haut qu’un changement de 40 mm. Comment reconstruire la figure pour comparer directement les grandeurs ?
  1. Partager les bornes des ordonnées et garder les valeurs réelles de chaque station.
  2. Garder des bornes distinctes et donner la même hauteur à chaque panneau.
  3. Normaliser chaque station par son maximum et partager les bornes des ordonnées.
  4. Garder des bornes distinctes et ajouter le même titre à chaque panneau.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Deux sites nécessitent des cartes de chaleur comparables par créneau. Le site A a deux effectifs, 20 et 40, pour un créneau ; le site B a 70 pour ce créneau. Chaque cellule doit afficher une moyenne sans décimales. Quels réglages de préparation et d’affichage rendent les valeurs et les teintes comparables ?
  1. Agréger par somme, utiliser fmt=".0f" et garder la même palette et les mêmes bornes.
  2. Agréger par moyenne, utiliser fmt="d" et garder la même palette et les mêmes bornes.
  3. Agréger par moyenne, utiliser fmt=".0f" et garder la même palette et les mêmes bornes.
  4. Agréger par moyenne, utiliser fmt=".0f" et laisser des bornes automatiques distinctes.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Un tableau enregistre chaque appareil à plusieurs moments. Tu veux les trajectoires individuelles des appareils, colorées par modèle, sans entrée de légende distincte pour chaque appareil. Comment configurer le graphique en courbes ?
  1. Utiliser le modèle pour la couleur, omettre les unités et conserver l’estimateur de moyenne.
  2. Utiliser l’appareil pour les unités, le modèle pour la couleur et estimator=None.
  3. Utiliser l’appareil pour la couleur, le modèle pour les unités et l’estimateur de moyenne.
  4. Utiliser l’appareil pour le style, le modèle pour la couleur et l’estimateur de moyenne.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Un nuage de points doit associer les effectifs des échantillons à l’aire des marqueurs et les précipitations à leur couleur. Pour les effectifs 20 et 80, le second marqueur doit être deux fois plus large que le premier, et les lecteurs ont besoin d’une échelle numérique des précipitations. Quelle construction convient ?
  1. Utiliser s=counts, c=rain_mm et une barre de couleurs issue du résultat du nuage de points.
  2. Utiliser s=counts**2, c=rain_mm et une barre de couleurs issue du résultat du nuage de points.
  3. Utiliser s=rain_mm, c=counts et une barre de couleurs issue du résultat du nuage de points.
  4. Utiliser s=counts, c=rain_mm et une légende des deux effectifs d’échantillon.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Tu bloques sur ton propre exercice ? Aide aux Devoirs

Mots-Clés

78 Mots-Clés, chacun avec sa définition

A

accesseur plot
L’accesseur plot de pandas fournit des méthodes de tracé sur un objet Series ou DataFrame, en utilisant Matplotlib par défaut.
Utilise l’accesseur plot sur des effectifs regroupés, puis personnalise la zone de tracé renvoyée avec un libellé d’unité.
agrégation
Une agrégation combine plusieurs lignes en un indicateur, comme une moyenne, une somme ou un effectif, pour chaque groupe défini.
Une agrégation par station transforme les lignes de précipitations quotidiennes en une valeur moyenne de précipitations par station.
aire des marqueurs
L’aire des marqueurs est la grandeur de taille contrôlée par l’argument s de scatter, mesurée en points typographiques carrés.
Doubler l’aire d’un marqueur multiplie sa largeur par environ 1,4, sans la doubler.
annotation
Une annotation est un texte associé à une position cible, éventuellement à l’aide d’une flèche et d’un libellé placé séparément.
Une annotation peut nommer un maximum tout en plaçant le texte à côté pour laisser le point visible.
axe
Un axe est l’axe des abscisses ou des ordonnées d’une zone de tracé, avec ses graduations, leurs libellés et son échelle.
L’axe vertical d’un graphique de températures peut afficher des libellés de graduations en degrés Celsius.
axe partagé
Un axe partagé relie les échelles de coordonnées de plusieurs panneaux afin que les positions correspondantes représentent les mêmes valeurs.
Un axe des ordonnées partagé place une hauteur de 80 mm à la même position dans chaque panneau de station.

B

bande d’écart-type
Une bande d’écart-type s’étend d’un nombre choisi d’écarts-types autour d’un indicateur pour montrer la dispersion des données.
Une bande d’un écart-type répond à une question différente de celle d’une bande de confiance pour une moyenne.
barre de couleurs
Une barre de couleurs est une légende numérique qui montre la correspondance entre les valeurs et les couleurs d’un nuage de points, d’une carte de chaleur ou d’une autre image.
Une barre de couleurs des précipitations permet aux lecteurs d’interpréter le dégradé d’un nuage de points comparant température et locations.
boîte englobante ajustée
Une boîte englobante ajustée adapte les limites de l’exportation au contenu dessiné et à la marge prévue, ce qui peut modifier les dimensions finales de l’image.
Une boîte englobante ajustée peut inclure une légende extérieure tout en supprimant les marges inutilisées.
borne de classe
Une borne de classe est une limite d’un intervalle d’histogramme qui détermine quelles valeurs appartiennent à cette classe.
Une valeur située sur une borne de classe interne appartient à la classe qui commence à cette borne, et non à celle qui s’y termine.
borne de détection des valeurs aberrantes
Une borne de détection des valeurs aberrantes est un seuil calculé pour repérer des valeurs inhabituelles dans une boîte à moustaches, généralement situé à 1,5 fois l’écart interquartile au-delà d’un quartile.
La borne supérieure de détection des valeurs aberrantes peut se trouver entre deux observations : elle ne correspond donc pas nécessairement à l’extrémité de la moustache supérieure.
bornes de l’échelle de couleurs
Les bornes de l’échelle de couleurs fixent les valeurs numériques aux deux extrémités d’une palette et déterminent la correspondance entre valeurs et couleurs dans un ou plusieurs graphiques.
Des bornes de couleurs identiques font représenter la même valeur à une teinte de bleu dans deux cartes de chaleur.

C

carte de chaleur
Une carte de chaleur représente un tableau de nombres par des cellules colorées, dont les libellés de lignes et de colonnes identifient la position.
Une carte de chaleur par station et par mois peut révéler une saison humide sous forme d’une bande de cellules plus foncées.
colonne de nombres
Une colonne de nombres stocke des valeurs sous forme numérique que les méthodes de tracé peuvent utiliser pour les mesures et les indicateurs.
Une colonne contenant des chaînes comme « 18 mm » doit être nettoyée avant de devenir une colonne de nombres.
conteneur de barres
Un conteneur de barres est la collection renvoyée par un appel de tracé de barres ; il contient les barres auxquelles on peut ensuite ajouter des étiquettes de valeurs.
Conserve le conteneur de barres lorsque tu veux ajouter des étiquettes à une série dans un graphique groupé.
coordonnées de la zone de tracé
Les coordonnées de la zone de tracé situent un élément par des fractions de cette zone, de zéro en bas à gauche à un en haut à droite.
Une note d’effectif placée aux coordonnées de la zone de tracé (0,02 ; 0,95) reste près du coin supérieur gauche du panneau.
coordonnées des données
Les coordonnées des données situent une marque dans les unités des variables représentées ; sa position à l’écran dépend donc des bornes des axes.
Une annotation placée à 20 minutes et 12 observations se déplace à l’écran lorsque les bornes des axes changent.
correspondance sémantique
Une correspondance sémantique associe une variable des données à une caractéristique visuelle comme la position, la couleur, le style ou la taille des marqueurs.
Associer la station à la fois à la couleur et au style distingue les mêmes groupes de deux façons visuelles.
couleur
La couleur est une correspondance sémantique de seaborn qui représente une variable par la couleur et ajoute généralement une légende correspondante.
Une variable catégorielle associée à la couleur donne des couleurs distinctes aux stations, tandis qu’une variable quantitative peut produire un dégradé de précipitations.

D

DatetimeIndex
Un DatetimeIndex est un index pandas d’horodatages que les méthodes de tracé peuvent utiliser pour un axe horizontal fondé sur les dates.
Rééchantillonner un DatetimeIndex aux débuts de mois peut produire un graphique de moyennes mensuelles.
décalage latéral
Le décalage latéral place les groupes de couleurs à des positions distinctes dans chaque catégorie afin de comparer leurs marques côte à côte.
Activer le décalage latéral sépare les groupes de couleurs d’un diagramme en points par catégorie qui se superposeraient autrement.
densité de probabilité
La densité de probabilité met les effectifs à l’échelle selon l’effectif de l’échantillon et l’amplitude des classes, de sorte que l’aire de l’histogramme représente une proportion d’observations.
Une densité de 0,02 par minute sur une classe de dix minutes donne une proportion de 0,2.
dépivotage
Un dépivotage remodèle les colonnes des séries en une colonne de noms de variables et une colonne de valeurs, tout en conservant les identifiants choisis.
Le dépivotage de trois colonnes de stations crée un champ de station que seaborn peut utiliser pour les facettes.
diagramme des effectifs
Un diagramme des effectifs affiche le nombre de lignes de chaque catégorie sans nécessiter de variable de réponse numérique distincte.
Un diagramme des effectifs par mode de transport montre combien de trajets enregistrés ont utilisé chaque type de transport.
diagramme en barres empilées
Un diagramme en barres empilées place les séries sur des bases cumulées afin que chaque barre montre à la fois les composantes et un total.
Un segment de 24 trajets au-dessus d’un segment de 36 trajets donne une barre empilée de hauteur totale 60.
diagramme en barres groupées
Un diagramme en barres groupées place des séries distinctes côte à côte autour de chaque position de catégorie afin de comparer leurs valeurs.
Décaler les ensembles de barres de deux stations autour de chaque mois évite la superposition des deux séries.
diagramme en essaim
Un diagramme en essaim décale les points individuels dans la direction des catégories pour éviter leur superposition lorsque l’espace est suffisant.
Un diagramme en essaim peut montrer séparément des durées répétées au lieu de les masquer à une même position.
diagramme en points par catégorie
Un diagramme en points par catégorie dessine les observations individuelles par catégorie, généralement avec une perturbation aléatoire pour réduire les superpositions exactes.
Un diagramme en points par catégorie superposé à une boîte à moustaches montre les délais de livraison individuels à côté de leur synthèse.
diagramme en violon
Un diagramme en violon affiche une estimation de densité symétrique pour chaque groupe, souvent avec une petite synthèse dessinée à l’intérieur.
Un diagramme en violon peut révéler deux pics masqués par une boîte à moustaches des mêmes observations.
dpi
Le dpi est le nombre de points par pouce ; pour une exportation matricielle, il convertit les dimensions physiques d’une figure en dimensions en pixels.
Une figure de 6 pouces de large enregistrée à 200 dpi mesure 1 200 pixels de large avant recadrage ajusté.
droite de régression
Une droite de régression est une droite ajustée qui synthétise une relation modélisée entre des variables quantitatives dans un échantillon.
Une droite de régression peut manquer une structure courbe qui reste visible dans les points.

É

écart interquartile
L’écart interquartile est égal à Q3 moins Q1 et mesure la dispersion de la moitié centrale d’un échantillon numérique ordonné.
Si Q1 vaut 16 minutes et Q3 vaut 24 minutes, l’écart interquartile est de 8 minutes.
échelle logarithmique
Une échelle logarithmique attribue des distances visuelles égales à des rapports égaux de valeurs positives plutôt qu’à des différences égales.
Sur une échelle logarithmique, le passage de 2 à 20 occupe la même distance que celui de 20 à 200.
échelle native
L’échelle native conserve l’espacement réel des nombres ou des dates sur un axe de catégories seaborn au lieu d’utiliser des intervalles égaux entre catégories.
Avec l’échelle native, les années 2019 et 2023 sont plus éloignées que 2019 et 2020.

E

estimateur
Un estimateur est la règle utilisée pour synthétiser des observations répétées, par exemple par leur moyenne, leur médiane ou leur somme.
Remplacer la moyenne par la somme comme estimateur change ce que représente la hauteur d’une barre seaborn.
estimation de densité par noyau
Une estimation de densité par noyau est une estimation lisse de la forme d’une distribution, obtenue en combinant de petites courbes autour des observations.
Une estimation de densité par noyau peut s’étendre en dessous de zéro même lorsque toutes les durées mesurées sont positives.

F

FacetGrid
Un FacetGrid est un objet seaborn qui contient une figure et des panneaux propres aux groupes, avec des méthodes de tracé et de libellé.
Un FacetGrid peut appliquer séparément une fonction d’histogramme aux observations de chaque station.
facette
Une facette est un panneau qui répète un graphique pour un sous-ensemble sélectionné par une variable de regroupement.
Une facette par mode de transport permet de comparer entre groupes une même distribution des durées de trajet domicile-travail.
feuille de style
Une feuille de style est un ensemble nommé de paramètres Matplotlib par défaut pour des aspects visuels comme les couleurs, les grilles, les polices et l’épaisseur des lignes.
Un contexte de style applique une feuille de style pendant un seul bloc sans modifier les graphiques créés ensuite.
figure
Une figure est le canevas entier de Matplotlib, contenant les zones de tracé et les éléments communs à la figure, comme un titre général.
Une figure peut contenir un graphique en courbes des précipitations à côté d’un histogramme des températures quotidiennes.
fonction au niveau d’une figure
Une fonction au niveau d’une figure crée sa propre figure ou grille et peut répartir les données en panneaux à l’aide de correspondances en lignes et en colonnes.
Un graphique relationnel au niveau d’une figure peut donner à chaque station un panneau avec les mêmes échelles d’axes.
fonction au niveau d’une zone de tracé
Une fonction au niveau d’une zone de tracé dessine dans une zone de tracé Matplotlib, accepte une zone existante et renvoie la zone utilisée.
Un histogramme seaborn au niveau d’une zone de tracé peut remplir le panneau droit d’une figure Matplotlib personnalisée.
fonction de répartition empirique
Une fonction de répartition empirique donne la proportion de valeurs observées inférieures ou égales à chaque seuil possible.
Une valeur de 0,8 à 40 minutes pour la fonction de répartition empirique signifie que 80 % des durées enregistrées sont au plus égales à 40 minutes.
format large
Le format large stocke des séries distinctes dans des colonnes distinctes, avec des identifiants de lignes partagés entre ces séries.
Un tableau large avec une colonne par station produit une courbe pandas par station.
format long
Le format long stocke les variables en colonnes et les observations en lignes, avec une colonne de groupe qui identifie chaque série.
Un tableau long peut associer la colonne des stations à la couleur et la colonne des précipitations à la position verticale.

G

graduation
Une graduation est une position marquée sur un axe de coordonnées ; son libellé est le texte qui décrit cette position.
Les numéros de mois peuvent avoir des graduations libellées « Jan », « Feb » et « Mar » sans changer de position.
graphique en courbes
Un graphique en courbes relie les observations dans l’ordre fourni, ce qui rend visibles les changements selon une variable ordonnée.
Trier ensemble la distance et l’altitude permet à la courbe d’un parcours de progresser le long du chemin.

H

histogramme
Un histogramme regroupe des mesures numériques dans des intervalles adjacents et utilise des barres pour représenter leurs effectifs ou leurs fréquences mises à l’échelle.
Un histogramme avec des classes de cinq minutes regroupe les durées de trajet domicile-travail proches dans un même intervalle.

I

image matricielle
Une image matricielle stocke une grille fixe de pixels ; l’agrandir peut donc rendre le texte et les lignes flous.
Une exportation PNG contenant suffisamment de pixels garde les libellés nets à la taille d’affichage prévue.
image vectorielle
Une image vectorielle stocke des formes et des tracés qui peuvent être redimensionnés sans la pixellisation d’une image matricielle agrandie.
Un graphique SVG garde son texte et ses lignes vectoriels nets lorsqu’il est redimensionné pour un rapport.
index
Un index identifie les lignes d’un objet pandas et fournit les coordonnées horizontales de son graphique en courbes par défaut.
Un index de dates permet à un graphique en courbes des précipitations d’afficher les dates sans colonne d’abscisses distincte.
interface orientée objet
L’interface orientée objet trace et personnalise les graphiques à l’aide d’objets figure et zone de tracé nommés et de leurs méthodes.
Conserver une référence à chaque zone de tracé permet à une fonction de tracé de libeller le panneau voulu.
intervalle de confiance
Un intervalle de confiance exprime l’incertitude d’une grandeur estimée à l’aide d’une méthode conçue pour des échantillonnages répétés.
La bande par défaut d’une courbe seaborn est un intervalle de confiance à 95 % pour chaque moyenne estimée.

L

largeur de bande
La largeur de bande contrôle le lissage d’une estimation de densité par noyau ; une largeur de bande plus grande produit une courbe plus lisse.
Augmenter la largeur de bande peut fusionner deux petites bosses apparues sur une courbe plus détaillée.
ligne de base
Une ligne de base est la valeur de départ à partir de laquelle une barre s’étend ; les barres Matplotlib ordinaires partent de zéro, sauf modification.
Le deuxième segment d’un empilement utilise la valeur du premier segment comme ligne de base.
ligne de référence
Une ligne de référence marque sur un graphique une valeur de coordonnée pertinente, comme une cible, une moyenne ou un seuil.
Une ligne de référence verticale à la médiane aide à comparer les deux côtés d’une distribution.

M

matrice de corrélation
Une matrice de corrélation est un tableau symétrique de coefficients de liaison linéaire entre paires de variables, dont les valeurs définies vont de −1 à 1.
Examine les nuages de points en complément d’une matrice de corrélation, car de fortes structures courbes peuvent avoir une faible corrélation.
matrice de nuages de points
Une matrice de nuages de points est une grille qui compare les variables quantitatives par paires et montre la distribution de chaque variable sur la diagonale.
Limiter une matrice de nuages de points à trois variables donne neuf panneaux avant la suppression des paires répétées.
mise en page sous contraintes
La mise en page sous contraintes est un moteur de mise en page Matplotlib qui ajuste l’espacement des panneaux pour laisser de la place aux libellés et aux éléments décoratifs.
La mise en page sous contraintes aide à éviter que de longs libellés d’axe des ordonnées ne chevauchent le panneau voisin.
mosaïque de sous-graphiques
Une mosaïque de sous-graphiques définit une disposition où les noms répétés indiquent les panneaux qui s’étendent sur plusieurs cellules et renvoie un dictionnaire de zones de tracé.
Une mosaïque de sous-graphiques peut placer un large graphique de tendance au-dessus de deux graphiques de distribution plus petits.
moustache
Une moustache s’étend depuis une boîte jusqu’à l’observation la plus extrême située à l’intérieur de sa borne de détection des valeurs aberrantes, selon la règle habituelle des boîtes à moustaches.
Une borne supérieure à 36 minutes et un maximum de 33 à l’intérieur de cette borne placent la moustache à 33 minutes.

N

normalisation par ligne
La normalisation par ligne divise chaque valeur par le total de sa ligne, de sorte que la ligne représente des proportions dont la somme vaut un.
La normalisation par ligne compare les répartitions des modes de transport entre des régions ayant des nombres de trajets différents.
nuage de points
Un nuage de points place des marqueurs distincts à des paires de valeurs numériques pour montrer les relations entre les observations.
Chaque marqueur d’un nuage de points peut représenter la température d’un jour et le nombre de locations de vélos ce jour-là.

O

objet graphique
Un objet graphique est un objet dessiné par Matplotlib, comme une ligne, un libellé textuel, une collection de marqueurs ou un rectangle.
Ajouter une ligne de référence crée un autre objet graphique dans la zone de tracé existante.
outil de formatage des graduations
Un outil de formatage des graduations convertit les valeurs de coordonnées en libellés affichés sans modifier les données numériques sous-jacentes.
Un outil de formatage des graduations en pourcentage peut afficher la fraction 0,4 sous la forme « 40% » sur un graphique de proportions.

P

palette divergente
Une palette divergente utilise des directions de couleur différentes de part et d’autre d’une valeur centrale pertinente, comme zéro.
Une palette divergente distingue les corrélations négatives des corrélations positives autour d’un centre neutre.
palette séquentielle
Une palette séquentielle ordonne les couleurs des valeurs faibles aux valeurs élevées, ce qui rend visibles les grandeurs d’un tableau de nombres.
Une palette séquentielle convient aux effectifs positifs ou nuls de visiteurs, des périodes calmes aux périodes chargées.
petits multiples
Les petits multiples répètent le même type de graphique pour différents sous-ensembles, généralement avec des échelles communes pour permettre la comparaison.
Un panneau de précipitations par station permet aux lecteurs de comparer les structures saisonnières sans superposition de courbes.
pivotement
Un pivotement réorganise des valeurs en lignes et en colonnes définies par deux identifiants ; chaque paire d’identifiants doit être unique.
Des mesures répétées pour une même station et un même mois nécessitent une agrégation avant un pivotement ordinaire.

Q

quartile
Un quartile est une borne qui partage les données ordonnées en quarts ; Q1 et Q3 délimitent la moitié centrale selon la méthode choisie.
Dans un petit échantillon, les quartiles interpolés peuvent différer des médianes des moitiés calculées à la main.

R

rapport largeur-hauteur
Le rapport largeur-hauteur d’une facette est sa largeur divisée par sa hauteur ; multiplier la hauteur par ce rapport donne la largeur du panneau.
Une facette de 3 pouces de haut et de rapport largeur-hauteur 1,5 mesure 4,5 pouces de large.
référence à une figure
Une référence à une figure est une variable Python qui conserve un objet figure pour le modifier ou l’enregistrer plus tard, même après sa libération par pyplot.
Conserver la référence à la figure permet à une cellule ultérieure du notebook d’enregistrer le graphique d’origine au lieu d’un graphique vide.
retour à la ligne des facettes
Le retour à la ligne des facettes limite le nombre de colonnes de facettes et place les panneaux restants sur les lignes suivantes.
Un retour à la ligne après trois colonnes place sept panneaux de stations sur des lignes qui en contiennent trois, trois et un.

S

superposition des points
La superposition des points se produit lorsque les marques se chevauchent assez pour masquer des observations ou rendre les zones denses difficiles à lire.
Des marqueurs plus petits et partiellement transparents révèlent des amas masqués par la superposition des points dans un grand échantillon.

T

tableau d’objets Axes
Un tableau d’objets Axes est un tableau NumPy d’objets représentant des zones de tracé, renvoyé lorsque Matplotlib crée plusieurs sous-graphiques.
Sélectionne un élément du tableau d’objets Axes par son indice avant de dessiner ; le tableau lui-même n’a pas de méthode de tracé.
thème
Un thème est un ensemble de paramètres de tracé par défaut pour le style, la taille du texte et la palette, qui influe sur les graphiques créés ensuite.
Définir un thème seaborn modifie aussi l’apparence des graphiques Matplotlib seuls créés ensuite.

V

valeur au-delà des moustaches
Une valeur au-delà des moustaches est une observation dessinée au-delà des moustaches d’une boîte parce qu’elle se trouve hors des bornes définies par la règle choisie.
Une attente réelle due à la circulation peut apparaître comme valeur au-delà des moustaches tout en ayant sa place dans des données de délais de livraison.

Z

zone de tracé
Une zone de tracé est un espace de tracé dans une figure Matplotlib, avec ses propres objets graphiques, libellés, bornes et système de coordonnées.
Sélectionne la zone de tracé voulue avant d’ajouter un titre au deuxième panneau d’une comparaison de stations.

À propos de cette unité

Par StudeliSignaler une erreur

Crée ton propre Matériel d'Étude

Transforme tes notes, diapos et documents en Guides d'Étude, Questions Pratiques, Flashcards et 6 autres outils.

Commencer