La compréhension des ensembles de données est essentielle à la démarche scientifique et au Big Data. Cependant, discerner la signification des données en ne regardant que leurs valeurs est une tâche difficile. Les statistiques descriptives sont des moyens rapides et concis d’extraire les caractéristiques importantes d’un ensemble de données en résumant la distribution par un petit ensemble de paramètres. Cet article se concentrera sur l’une des techniques les plus courantes pour résumer les données. Elle sert à présenter certaines statistiques récapitulatives d’une manière visuellement attrayante et interprétable. Il s’agit du boxplot, également appelé la boite à moustache.
Typiquement, la médiane, le mode, la moyenne,variance et quantiles sont utilisés à cette fin. L’objectif principal des statistiques descriptives est de décrire rapidement les caractéristiques de la distribution sous-jacente d’un ensemble de données à travers un ensemble de valeurs simplifiées. Souvent, ces paramètres fournissent des informations sur les données qui, autrement, seraient cachées. En outre, ces résumés de données facilitent la comparaison de plusieurs ensembles de données. Les méthodes de présentation visuelle des statistiques sommaires comprennent les tableaux, les diagrammes et les graphiques.
Les tracés graphiques sont intéressants dans la mesure où ils transmettent par l’image une grande quantité d’informations de manière concise, ce qui permet d’éviter les erreurs. Il existe de nombreuses façons de présenter des statistiques descriptives sous forme de graphiques et boxplot en fait partie.
Dans ce tutoriel exhaustif, nous allons vous montrer cette technique et la manière de l’implémenter avec Python afin de visualiser vos données.
Qu’est-ce qu’un boxplot
En statistique descriptive, un boxplot, également connu sous le nom de box and whisker plot, est un type de graphique souvent utilisé dans l’analyse de données. Les diagrammes en boîte montrent visuellement la distribution des données numériques et l’asymétrie en affichant les quartiles et les moyennes des données.
Les diagrammes en boîte montrent le résumé en cinq chiffres d’un ensemble de données : le score minimum, le premier quartile (inférieur), la médiane, le troisième quartile (supérieur) et le score maximum.
Les éléments d’un boxplot
Voici les éléments qui composent un boxplot :
- min: il s’agit de la valeur la plus basse de l’ensemble de données à l’exclusion des valeurs aberrantes (une valeur aberrante est une observation qui se situe à une distance anormale d’autres valeurs dans un échantillon aléatoire d’une population) ;
- médiane: c’est le point médian de l’ensemble de données. 50% des points de données seront inférieurs à cette valeur et 50% des données seront au-dessus de cette valeur ;
- premier quartile: il s’agit du point du 25e centile. Les valeurs de 25% des points de données sont inférieures à cette valeur et 75% supérieures à cette valeur ;
- troisième quartile: c’est le point du 75e centile. Les valeurs de 75% des points de données sont inférieures à cette valeur ;
- Intervalle interquartile (IQR): ce sont les points compris entre le 25e et le 75e centile ;
- Moustaches: il s’agit des points autres que les 50% du milieu ;
- max: c’est le point de la valeur maximale à l’exclusion des valeurs aberrantes.
Pourquoi utiliser des boxplots ?
Les raisons suivantes font que les boites à moustache sont très utiles pour la visualisation des données :
Visualise facilement les grands ensembles de données
Grâce au résumé des données en cinq nombres, un diagramme en boîte peut traiter et présenter un résumé d’une grande quantité de données. Un diagramme en boîte se compose de la médiane, qui est le point médian de la plage de données. Il y a aussi les quartiles supérieurs et inférieurs, qui représentent les nombres situés au-dessus et au-dessous des quartiles supérieurs et inférieurs des données. Et enfin, il y a les valeurs minimales et maximales des données. L’organisation des données dans un diagramme en boîte à l’aide de cinq concepts clés est un moyen efficace de traiter des données volumineuses trop difficiles à gérer pour d’autres graphiques. Les diagrammes linéaires ou les diagrammes à tiges et à feuilles sont donc mieux appréhendés grâce au boxplot.
Les valeurs exactes ne sont pas conservées
Le boxplot ne conserve pas les valeurs exactes et les détails des résultats de la distribution, ce qui pose un problème lorsqu’il s’agit de traiter une grande quantité de données dans ce type de graphique. Une boite à moustache ne montre qu’un simple résumé de la distribution des résultats. Cependant, cela est utile afin que vous puissiez la visualiser rapidement et la comparer à d’autres données. Utiliser un boxplot en combinaison avec une autre méthode de graphique statistique, comme un histogramme, serait mieux pour une analyse plus approfondie et plus détaillée des données.
Un résumé clair
Un diagramme en boîte est un moyen très efficace visuellement parlant d’obtenir un résumé clair d’un ou plusieurs ensembles de données. Il est particulièrement utile pour résumer et comparer rapidement différents ensembles de résultats provenant de différentes expériences. D’un seul coup d’œil, un boxplot affiche une représentation graphique de la distribution des résultats et fournit des indications sur la symétrie des données.
Affichage des valeurs aberrantes
La boite à moustache est l’une des rares méthodes de graphique statistique à afficher les valeurs aberrantes. Il peut y avoir une ou plusieurs valeurs aberrantes dans un ensemble de données, qui se situent à la fois en dessous et au-dessus des valeurs minimales et maximales. En étendant les valeurs de données minimales et maximales de l’écart interquartile à un maximum de 1,5 fois, le diagramme en boîte présente les valeurs aberrantes ou les résultats obscurs. Les résultats des données qui se situent en dehors des valeurs minimales et maximales, appelées valeurs aberrantes, sont faciles à déterminer sur un graphique boxplot.
Implémentation du boxplot en python
Les boxplots peuvent être tracés à l’aide de nombreuses bibliothèques de plots. Voyons comment créer des boites à moustache en utilisant python avec la bibliothèque seaborn.
Pour créer un box plot, nous aurons besoin des éléments suivants :
Python installé sur votre machine. Vous pouvez consulter notre article sur la programmation Python ainsi que cette article sur anaconda pour pouvoir installer Python sur votre PC. Notre article sur jupyter peut vous être utile pour apprendre à interagir avec Python.
Pip : un système de gestion de paquets (fourni avec Python) ;
Jupyter Notebook : un éditeur en ligne pour la visualisation de données ;
Pandas : une bibliothèque pour préparer les données pour le traçage ;
Matplotlib : une bibliothèque de traçage ;
Seaborn : une autre bibliothèque de traçage ;
En première ligne de votre notebook, importez toutes les bibliothèques nécessaires :
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
Préparation des données
Nous allons créer un diagramme en boîte montrant différents taux de change par rapport à l’USD. Vous pouvez télécharger l’ensemble de données Taux de change 2000-2019 sur Kaggle (Foreign_Exchange_Rates.csv).
Nous allons utiliser 6 colonnes de ce jeu de données (1-5 et 7). On va renommer ces colonnes en sautant la première ligne (qui est l’en-tête) et en définissant la première colonne comme index. Nous allons également nous assurer que toutes nos valeurs sont des nombres et supprimer les lignes avec des valeurs NaN.
df = pd.read_csv('Foreign_Exchange_Rates.csv',
usecols=[1,2,3,4,5,7], names=['Date', 'AUD', 'EUR', 'NZD', 'GBP', 'CAD'],
skiprows=1, index_col=0)
colonnes = ['AUD', 'EUR', 'NZD', 'GBP', 'CAD']
df[colonnes] = df[colonnes].apply(pd.to_numeric, errors='coerce', axis=1)
df.dropna(inplace=True)
df.head(10)
Voici le résultat que l’on obtient :
Tracé de la courbe
Nous allons créer une boite à moustache en 7 étapes. Tous les extraits de code ci-dessous doivent être placés dans une seule cellule de votre notebook Jupyter.
1. Créer une figure et un sous-plot
Pour créer une figure et un sous-plot, vous devez saisir les instructions suivantes :
sns.set(style='whitegrid')
facecolor = '#eaeaf2'
fig, ax = plt.subplots(figsize=(10, 6), facecolor=facecolor)
style=’whitegrid’ définit une grille gris clair avec un fond blanc et figsize=(10, 6) crée une figure de 1000 × 600 px.
2.Créer un box plot
sns.boxplot permet de créer un box plot, comme suit :
x = sns.boxplot(data=df,
palette='Set3',
linewidth=1.2,
fliersize=2,
order=['GBP', 'EUR', 'CAD', 'AUD', 'NZD'],
flierprops=dict(marker='o', markersize=4))
Voici quelques précisions sur les paramètres de sns.boxplot :
palette : Seaborn colormap ; vous pouvez en lire plus dans la documentation ;
linewidth : largeur des lignes grises qui encadrent les éléments du graphique ;
fliersize : taille des marqueurs utilisés pour indiquer les valeurs aberrantes ;
order : ordre des éléments présentés dans le graphique ;
flierprops : paramètres des points aberrants ;
orient=’v’ ou orient=’h’ : orientation verticale ou horizontale du graphique ;
showfliers=False : supprime les valeurs aberrantes du graphique.
showmeans=True : affiche des marqueurs indiquant les valeurs moyennes.
3. Définir la police des étiquettes
Pour effectuer cette définition, vous devez écrire les instructions suivantes :
font_color = '#525252'
csfont = {'fontname':'Georgia'}
hfont = {'fontname':'Calibri'}
ax.set_ylabel('USD', fontsize=16, color=font_color, **hfont)
for label in (ax.get_xticklabels() + ax.get_yticklabels()):
label.set(fontsize=16, color=font_color, **hfont)
4. Définir un titre
Pour la définition d’un titre, voici les instructions à taper :
title = 'Taux de change moyens, 2000-2019'
fig.suptitle(title, y=.97, fontsize=22, color=font_color, **csfont)
subtitle = 'Source: Kaggle'
plt.title(subtitle, fontsize=18, pad=10, color=font_color, **hfont)
plt.subplots_adjust(top=0.85)
Ici, pad=10 créera un remplissage sous le titre, et plt.subplots_adjust s’assurera que notre titre et notre sous-titre s’adaptent à la figure.
5. Définir la couleur des points aberrants
Par défaut, les points aberrants sont gris. Nous pouvons les rendre de la même couleur que la couleur de la boîte correspondante :
for i, box in enumerate(ax.artists):
col = box.get_facecolor()
plt.setp(ax.lines[i*6+5], mfc=col, mec=col)
Chaque boîte d’un boxplot Seaborn est un objet artiste avec 6 objets Line2D associés (pour faire les moustaches, les fliers, etc.). Nous itérons les boîtes et définissons les couleurs de leurs points aberrants en fonction des couleurs individuelles des boîtes.
6. Définir les étiquettes pour les valeurs médianes
Pour afficher les valeurs médianes sur les boîtes, nous pouvons déduire les valeurs médianes du tracé. Tenez compte du fait qu’une ligne sur quatre à l’intervalle de 6 est la ligne médiane (0 = 25e percentile, 1 = 75e percentile, 2 = moustache inférieure, 3 = moustache supérieure, 4 = 50e percentile et 5 = valeur extrême supérieure).
lines = ax.get_lines()
categories = ax.get_xticks()
for cat in categories:
y = round(lines[4+cat*6].get_ydata()[0],1)
ax.text(
cat,
y,
f'{y}',
ha='center',
va='center',
fontweight='semibold',
size=12,
color='white',
bbox=dict(facecolor='#828282', edgecolor='#828282')
)
bbox crée des boîtes autour des valeurs médianes ; facecolor définit la couleur de fond et edgecolor la couleur de la bordure.
7. Enregistrez le graphique sous forme d’image
Pour obtenir le graphique sous forme d’image, il faut effectuer ceci :
lename = 'sns-boxplot'
plt.savefig(filename+'.png', facecolor=facecolor)
Nous obtenons le graphique suivant :
Le graphique obtenu est assez clair. En vous basant sur les éléments d’un boxplot détaillé dans la section précédente, vous pouvez interpréter sans aucune difficulté ce graphique. Par exemple, le graphique montre que l’euro était en moyenne égal à 0,8 USD pendant la période 2000 à 2019.
Voilà ! Nous sommes arrivés au terme de cet article complet sur boxplot. Nous espérons que vous avez compris l’intérêt de ce graphique dans votre carrière ou future carrière de data scientists. Si vous avez des questions par rapport à l’utilisation de ce graphique, n’hésitez pas à la poser dans les commentaires. Pour aller plus loin dans vos compétences en data science, n’hésitez pas à vous inscrire sur cette formation en Big Data Streaming.