Accéder au contenu principal

Les diagrammes en boîte de Python : Un guide complet pour les débutants

Créez de superbes diagrammes en boîte en Python ! Ce tutoriel complet pour débutants couvre Matplotlib et Seaborn, vous aidant à visualiser et à comparer les distributions de données.
Actualisé 16 janv. 2025  · 15 min de lecture

Vous êtes-vous déjà demandé comment mieux représenter les distributions de données numériques en Python ? Le mieux est d'apprendre à utiliser les diagrammes en boîte ! Les diagrammes en boîte sont un excellent moyen de visualiser les comparaisons de distribution entre plusieurs groupes.

Dans ce tutoriel, nous verrons ce que sont les boxplots, les différentes façons de les créer en Python, et quelques erreurs courantes de débutant.

Que sont les diagrammes en boîte de Python ?

Les diagrammes en boîte, également connus sous le nom de diagrammes en boîte et en pointillé, sont un moyen standard d'afficher la distribution des données sur la base d'un résumé en cinq nombres : minimum, premier quartile (Q1), médiane, troisième quartile (Q3) et maximum.

Les diagrammes en boîte sont particulièrement utiles pour identifier les valeurs aberrantes et comprendre la dispersion et l'asymétrie des données. Ils sont également utilisés pour comparer plusieurs groupes ou pour visualiser la distribution d'une seule variable.

Composants du diagramme en boîte

L'anatomie d'un diagramme en boîte typique comprend plusieurs composants :

  1. Médiane: Il s'agit de la valeur moyenne des données, représentée par une ligne à l'intérieur de la boîte.
  2. Boîtes: Il s'agit de l'intervalle interquartile (IQR) des données, qui représente l'intervalle entre Q1 et Q3. Les bords inférieur et supérieur représentent respectivement Q1 et Q3.
  3. Moustaches: Il s'agit de lignes verticales qui partent de chaque extrémité de la boîte pour représenter les valeurs minimales et maximales, à l'exclusion de toute valeur aberrante.
  4. Les valeurs aberrantes: Il s'agit de points situés en dehors des moustaches, considérés comme inhabituels ou extrêmes par rapport au reste des données.
  5. Casquettes: Il s'agit de lignes horizontales aux extrémités des moustaches, représentant les valeurs minimales et maximales, y compris les valeurs aberrantes.

Ces composants se combinent pour donner au diagramme en boîte une signification statistique et permettre des comparaisons visuelles faciles entre différents groupes de données.

Python est un outil avancé qui peut nous aider à créer des diagrammes en boîte. Dans les sections suivantes, nous examinerons différentes méthodes pour y parvenir.

Les diagrammes en boîte de Python : Guide étape par étape

Maintenant que nous avons une compréhension de base des boxplots, voyons comment les créer à l'aide de Python. De nombreuses bibliothèques en Python, telles que Matplotlib, Seaborn et Plotly, prennent en charge la création de boxplots.

Pour créer des boxplots en Python, il faut d'abord installer les bibliothèques nécessaires. Les principales bibliothèques nécessaires sont Matplotlib, Seaborn et Plotly.

Voici le code pour les installer :

pip install matplotlib
pip install seaborn
pip install plotly==5.22.0

Après l'installation, l'étape suivante consiste à importer ces bibliothèques dans votre environnement Python.

Veillez également à charger les ensembles de données nécessaires que vous utiliserez pour vos diagrammes en boîte, le cas échéant.

#imports Matplotlib library and assigns shorthand 'plt'
import matplotlib.pyplot as plt
#imports Seaborn library and assigns shorthand 'sns'
import seaborn as sns
#imports Plotly library and assigns shorthand 'px'
import plotly.express as px

Grâce à la polyvalence de Python, la création d'un simple boxplot nécessite un minimum de code. Commençons par la bibliothèque la plus courante, Matplotlib.

Pour créer un diagramme en boîte à l'aide de Matplotlib, importez les bibliothèques nécessaires :

import matplotlib.pyplot as plt
import numpy as np

Préparons ensuite un ensemble de données simple :

# Generates some random dataset
np.random.seed(10) 
data = np.random.normal(0, 1, 100)

Enfin, créons le diagramme en boîte et imprimons-le :

# Creates a boxplot
plt.boxplot(data) plt.title('Basic Boxplot') plt.show()

Voici les résultats :Basic Matplotlib plot

Si vous souhaitez créer des boxplots distincts dans différents sous-graphes, vous pouvez utiliser la fonction subplot. Cela vous permet de créer plusieurs boxplots côte à côte dans une seule image. 

Voici l'exemple de code complet :

import matplotlib.pyplot as plt
import numpy as np
# Generates multiple datasets
data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 2, 100)
data3 = np.random.normal(2, 1.5, 100)
# Creates subplots
fig, axs = plt.subplots(1, 3, figsize=(15, 5))
# Plots Boxplot for Data 1
axs[0].boxplot(data1)
axs[0].set_title('Data 1')
axs[0].set_xlabel('Sample')
axs[0].set_ylabel('Value')
# Plots Boxplot for Data 2
axs[1].boxplot(data2)
axs[1].set_title('Data 2')
axs[1].set_xlabel('Sample')
axs[1].set_ylabel('Value')
# Plots Boxplot for Data 3
axs[2].boxplot(data3)
axs[2].set_title('Data 3')
axs[2].set_xlabel('Sample')
axs[2].set_ylabel('Value')
# Adjusts layout
plt.tight_layout()
plt.show()

Voici le graphique obtenu :

Multiples diagrammes en boîte dans Matplotlib

Toutefois, ces sous-graphes ne partagent pas le même axe et ne se prêtent pas à des comparaisons côte à côte entre les catégories. Pour plusieurs diagrammes en boîte avec le même axe, vous devrez créer des diagrammes en boîte groupés.

Les diagrammes en boîte groupés sont particulièrement utiles pour comparer les distributions entre plusieurs catégories. Ils permettent une compréhension plus nuancée des données. Ces comparaisons peuvent révéler des différences qui ne sont pas immédiatement évidentes à partir d'autres graphiques.

Chaque groupe est présenté côte à côte dans le même graphique, ce qui facilite la mise en évidence des variations, des tendances et des valeurs aberrantes dans les différentes sous-catégories.

Voici comment créer une intrigue secondaire groupée :

# Generates grouped data
data_group1 = [np.random.normal(0, 1, 100), np.random.normal(1, 2, 100), np.random.normal(2, 1.5, 100)]
data_group2 = [np.random.normal(0, 1, 100), np.random.normal(1, 2, 100), np.random.normal(2, 1.5, 100)]
# Combines two data groups into a dataset
data = data_group1 + data_group2
# Creates grouped boxplots
plt.boxplot(data, positions=[1, 2, 3, 5, 6, 7], labels=['G1-D1', 'G1-D2', 'G1-D3', 'G2-D1', 'G2-D2', 'G2-D3'])
plt.title('Grouped Boxplots')
plt.xlabel('Group-Dataset')
plt.ylabel('Value')
plt.show()

Voici le diagramme en boîte groupé produit par le code ci-dessus :

Graphiques en boîte groupés dans Matplotlib

Vous pouvez utiliser la personnalisation avancée de Matplotlib pour améliorer vos visualisations de données.

Des techniques telles que l'ajout de moyennes, l'ajout d'écarts types, la création de diagrammes en boîte groupés et l'utilisation de diagrammes en boîte horizontaux peuvent donner une meilleure idée de la distribution de vos données.

La personnalisation des diagrammes en boîte dans Python vous permet également d'adapter les visuels aux spécifications de votre projet.

Voici quelques façons de personnaliser les boxplots à l'aide de la bibliothèque Matplotlib :

1. Ajout d'étiquettes et de titres

Les titres et les étiquettes rendront vos graphiques plus facilement compréhensibles pour les spectateurs, qui pourront rapidement discerner la comparaison des données. L'ajout de ces éléments est simple et peut être effectué à l'aide des fonctions de Matplotlib.

Pour ajouter des étiquettes à un boxplot Matplotlib :

plt.boxplot(data)
# Adds title
plt.title('Customized Boxplot Title')
# Adds x axis label
plt.xlabel('Customized X Label')
# Adds y axis label
plt.ylabel('Customized Y Label')
plt.show()

Vous obtiendrez ainsi un diagramme en boîte étiqueté comme dans l'image ci-dessous :

Titre et étiquettes de boxplot personnalisés dans Matplotlib

2. Ajustement des couleurs des boxplots

La personnalisation des couleurs et des styles des boxplots en Python permet une présentation visuellement attrayante et claire des données. Ils vous aideront également à mettre en valeur des points de données ou des comparaisons spécifiques auprès de vos parties prenantes.

Vous pouvez modifier les couleurs des boîtes, des moustaches, des caps, des médianes et des fliers à l'aide des paramètres boxprops, whiskerprops, capprops, medianprops, et flierprops.

Voici l'exemple de code :

plt.boxplot(data, boxprops=dict(color='blue'), whiskerprops=dict(color='red'), capprops=dict(color='green'), medianprops=dict(color='orange'), flierprops=dict(markerfacecolor='red', marker='o'))
plt.show()

Cela créera différentes couleurs pour les composants de votre diagramme en boîte en fonction des paramètres définis :

Personnalisation des couleurs de Boxplot dans Matplotlib

3. Addition de la moyenne et de l'écart-type

Ajoutez la moyenne et l'écart-type au diagramme en boîte pour fournir davantage d'informations statistiques.

# Creates dataset
data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 2, 100)
data3 = np.random.normal(2, 1.5, 100)
# Calculates the mean and standard deviations
mean = [np.mean(d) for d in data]
std_devs = [np.std(d) for d in data]
# Creates a boxplot
plt.boxplot(data, labels=['Data 1', 'Data 2', 'Data 3'])
# Adds mean as red dots
for i in range(len(mean)):
   plt.plot(i + 1, mean[i], 'ro')
# Adds standard deviations as error bars
for i in range(len(std_devs)):
   plt.errorbar(i + 1, mean[i], yerr=std_devs[i], fmt='o', color='red')
# Plots graph
plt.title('Boxplot with Means and Standard Deviations')
plt.xlabel('Dataset')
plt.ylabel('Value')
plt.show()

Voici le graphique obtenu :

Boxplot avec moyenne et écart-type dans Matplotlib

4. Graphiques en boîte horizontaux

Les diagrammes en boîte horizontaux peuvent rendre la visualisation des données plus lisible, en particulier lorsqu'il s'agit de noms de catégories longs.

Pour ce faire, il suffit d'utiliser le paramètre vert de la fonction boxplot de Matplotlib.

# Creates horizontal boxplot
plt.boxplot(data,
            labels=['Data 1', 'Data 2', 'Data 3'], 
            vert=False)
# Plots graph
plt.title('Horizontal Boxplot')
plt.xlabel('Value')
plt.ylabel('Dataset')
plt.show()

Voici le graphique résultant de l'exécution du code ci-dessus :

Graphique en boîte horizontal dans Matplotlib

Notre cours Introduction à la visualisation de données avec Matplotlib devrait également vous aider à mieux comprendre comment créer des visualisations de données au-delà des boxplots.

Si vous avez besoin de consulter ces informations à l'avenir, voici un résumé de l'aide-mémoire pour les tracés dans Matplotlib :

Matplotlib cheatsheet

Seaborn, construit au-dessus de Matplotlib, simplifie la création de boxplots esthétiques avec un minimum de code. Sa syntaxe simple le rend accessible à tous les niveaux de compétence, et son intégration avec d'autres bibliothèques permet une flexibilité maximale dans l'analyse des données.

Voici un guide étape par étape pour créer un diagramme en boîte de base à l'aide de Seaborn. Comme précédemment, commencez par importer les bibliothèques nécessaires.

# Imports necessary libraries
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

Préparons ensuite un ensemble de données simple :

# Generates a random dataset
np.random.seed(10)
data = np.random.normal(0, 1, 100)

Enfin, créons le diagramme en boîte et imprimons-le :

# Creates a basic boxplot
sns.boxplot(data=data)
# Adds title to the boxplot
plt.title('Basic Boxplot') 
plt.show()

Voici le graphique obtenu :

Diagramme en boîte de Seaborn de base

Vous pouvez personnaliser votre graphique Seaborn en utilisant les paramètres hue, orient, et palette

Voyons comment ajouter des couleurs à votre boxplot en fonction des catégories, en utilisant le paramètre hue:

# Generate multiple datasets
data = {
    'Group': ['A']*100 + ['B']*100 + ['C']*100,
    'Value': np.concatenate([np.random.normal(0, 1, 100), 
                             np.random.normal(1, 2, 100), 
                             np.random.normal(2, 1.5, 100)])
}
df = pd.DataFrame(data)
# Create additional grouping data
df['Subgroup'] = np.random.choice(['X', 'Y'], size=300)
# Plots graph
sns.boxplot(x='Group', y='Value', data=df, hue='Subgroup', palette='Set2')
plt.title('Colored Boxplot')
plt.show()

Voici le diagramme en boîte modifié :

Diagramme en boîte de Seaborn coloré

Pour aligner votre diagramme en boîte dans une orientation spécifique, utilisez le paramètre orient. Pour une orientation verticale, le paramètre orient doit être réglé sur "v". Pour l'orientation horizontale, la valeur doit être "h".

Voici le code pour un diagramme en boîte horizontal :

# Plots horizontal boxplot
sns.boxplot(data=df, orient='h', palette='Set2')
plt.title('Colored Boxplot')
plt.show()

Le code ci-dessus permet de créer un diagramme en boîte comme suit :

Diagramme en boîte horizontal de Seaborn

Pour ajouter des points de données individuels au diagramme en boîte, vous pouvez utiliser un diagramme en essaim à l'aide de la fonction swarmplot:

# Plots boxplot
sns.boxplot(x='Group', y='Value', data=df)
# Overlays swarm plot over boxplot
sns.swarmplot(x='Group', y='Value', data=df, color='black', alpha=0.5)
plt.title('Boxplot with Swarmplot')
plt.show()

Le code ci-dessus permet de créer un diagramme en boîte comme suit :

Boxplot avec swarmplot

Un diagramme en essaim comme celui-ci peut vous aider à mieux comprendre la distribution de vos données. Il complète les informations statistiques d'un diagramme en boîte pour donner à vos visiteurs une image complète de vos données.

Consultez notre cours Introduction à la visualisation de données avec Seaborn pour découvrir d'autres façons de mettre en œuvre des visualisations de données dans Seaborn.

Si vous souhaitez consulter ces informations à l'avenir, voici un aide-mémoire pour le traçage dans Seaborn:

L'antisèche Seaborn

Interprétation des résultats des diagrammes en boîte de Python

L'interprétation d'un diagramme en boîte dépend du contexte et de la question de recherche spécifique à laquelle il répond.

Cependant, certaines lignes directrices générales peuvent aider à comprendre la distribution des données représentée par le diagramme en boîte. Il s'agit notamment de

  • La ligne médiane indique la valeur moyenne de l'ensemble des données.
  • L'intervalle interquartile (IQR) ou la moitié centrale des valeurs se situe entre le premier quartile (Q1) et le troisième quartile (Q3).
  • Les moustaches s'étendent 1,5 fois au-dessus et au-dessous de Q3 et Q1, respectivement.
  • Les valeurs aberrantes sont représentées individuellement par un point ou un astérisque.
  • La longueur de la boîte et des moustaches donne une idée de la dispersion des données.
  • Les distributions asymétriques présentent une asymétrie dans la taille et la position de la boîte par rapport à la ligne médiane.
  • Les valeurs aberrantes supérieures à 1,5 fois au-dessus ou au-dessous de Q3 et Q1 peuvent indiquer des valeurs extrêmes ou des erreurs potentielles dans la mesure des données.

Erreurs courantes à éviter lors de la création de diagrammes en boîte en Python

Même si Python permet de créer facilement des diagrammes en boîte visuellement attrayants à partir de vos ensembles de données, quelques aspects doivent être pris en compte pour éviter les visualisations trompeuses ou incorrectes.

1. Ne pas traiter les valeurs manquantes

Lors de la création d'un diagramme en boîte Python, les praticiens négligent souvent l'importance du prétraitement des données, ce qui conduit à des résultats trompeurs. 

Toutes les visualisations de données nécessitent une certaine forme de nettoyage avant d'être tracées. Les diagrammes en boîte ne font pas exception et peuvent afficher les valeurs manquantes comme des valeurs aberrantes, ce qui peut fausser les résultats.

2. Mise à l'échelle incorrecte des données

En outre, les utilisateurs ne parviennent pas toujours à mettre les données à l'échelle de manière appropriée, ce qui peut donner lieu à un diagramme en boîte faussé qui représente mal les véritables caractéristiques de l'ensemble de données. La mise à l'échelle permet de s'assurer que les caractéristiques contribuent de manière égale à l'analyse.

3. Ne pas traiter les valeurs aberrantes

Enfin, les analystes peuvent négliger d'examiner et de traiter soigneusement les valeurs aberrantes avant de les tracer. Un mauvais traitement des valeurs aberrantes peut fausser l'interprétation, d'où l'importance de distinguer les vraies valeurs aberrantes des erreurs ou anomalies dans la collecte des données.

Essayez d'utiliser cet aide-mémoire lorsque vous créez des visualisations de données:

Aide-mémoire sur la visualisation des données

Réflexions finales

Les diagrammes en boîte sont un outil précieux pour visualiser les distributions de données et les comparer entre catégories. 

En Python, vous pouvez utiliser Matplotlib, Seaborn ou Plotly pour créer rapidement des boxplots sans trop coder. DataCamp propose des cours complets pour chacun de ces outils :

Que diriez-vous d'en savoir plus sur la visualisation de données à l'aide de Python ? Alors le cursus de compétences Visualisation de données avec Python vous serait grandement utile !

FAQ

Les diagrammes en boîte peuvent-ils être utilisés pour des données non numériques ?

Non, les diagrammes en boîte sont explicitement conçus pour les données numériques. Ils représentent la distribution d'un ensemble de données sur la base d'un résumé en cinq nombres (minimum, premier quartile, médiane, troisième quartile et maximum), qui nécessite des valeurs numériques. Pour les données non numériques, d'autres techniques de visualisation telles que les diagrammes à barres ou les diagrammes circulaires sont plus appropriées.

Comment interpréter la présence de valeurs aberrantes multiples dans un diagramme en boîte ?

Des valeurs aberrantes multiples dans un diagramme en boîte indiquent plusieurs points de données significativement différents du reste de l'ensemble de données. Cela pourrait suggérer la présence d'une variabilité ou d'observations inhabituelles qui pourraient nécessiter un examen plus approfondi. Les valeurs aberrantes peuvent être dues à des erreurs dans la collecte des données, à des variations naturelles ou à des différences significatives entre les sous-groupes au sein des données.

Puis-je utiliser des diagrammes en boîte pour comparer la distribution des données dans plusieurs catégories ?

Oui, les diagrammes en boîte sont excellents pour comparer les distributions dans différentes catégories. Vous pouvez placer des diagrammes en boîte côte à côte pour différentes catégories afin de comparer leurs médianes, leurs intervalles interquartiles et la présence de valeurs aberrantes. Cela permet d'identifier les différences et les similitudes dans la répartition des différents groupes.

Quels sont les pièges les plus courants à éviter lors de l'interprétation des diagrammes en boîte ?

Lorsque vous interprétez des diagrammes en boîte, évitez les pièges suivants :

  • Ignorer le contexte des valeurs aberrantes : Les valeurs aberrantes n'indiquent pas toujours des erreurs, mais peuvent être des variations significatives.
  • Interprétation erronée de la médiane comme étant la moyenne : La médiane est la valeur moyenne, et non la moyenne, et est moins affectée par les valeurs aberrantes.
  • Négliger l'importance de la taille de l'échantillon : Des échantillons de petite taille peuvent donner lieu à des diagrammes en boîte trompeurs. Assurez-vous que la taille de vos données est suffisante pour permettre une interprétation fiable.

Comment créer des diagrammes en boîte interactifs en Python ?

Pour créer des boxplots interactifs en Python, vous pouvez utiliser des bibliothèques comme Plotly ou Bokeh. Ces bibliothèques vous permettent d'ajouter de l'interactivité à vos visualisations, telles que des infobulles, des zooms et des panoramiques.


Austin Chia's photo
Author
Austin Chia
LinkedIn

Je m'appelle Austin, je suis blogueur et rédacteur technique et j'ai des années d'expérience en tant que data scientist et data analyst dans le domaine de la santé. J'ai commencé mon parcours technologique avec une formation en biologie et j'aide maintenant les autres à faire la même transition grâce à mon blog technologique. Ma passion pour la technologie m'a conduit à écrire pour des dizaines d'entreprises SaaS, inspirant les autres et partageant mes expériences.

Sujets

Apprenez-en plus sur Python et la visualisation de données avec ces cours !

cours

Introduction to Data Visualization with Matplotlib

4 hr
193.4K
Learn how to create, customize, and share data visualizations using Matplotlib.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

Voir plusVoir plus