Maîtriser la librairie Matplotlib
Introduction
Matplotlib est une librairie graphique très connue en Python, car elle est puissante, facile à prendre en main et chaque élément de la figure peut être configuré finement via un grand nombre de paramètres disponibles. Il est possible de paramétrer la taille de la figure, sa qualité, les couleurs, les styles, les axes, les titres, etc. De plus, les figures en sortie peuvent être de différents formats comme les formats PNG, PDF, SVG ou encore EPS.
En analyse de données, en plus d’explorer les données avec la librairie Pandas et ses différentes fonctions et méthodes que nous avons vues dans le chapitre précédent, la visualisation est une étape tout aussi importante. Elle va permettre de visualiser et de mettre en avant des informations, des tendances dans ses données. Dans ce chapitre, nous allons voir ensemble les fonctionnalités les plus importantes de Matplotlib et comment les utiliser.
Il faut savoir que la librairie Matplotlib, qui est une librairie orientée objet, est rarement utilisée en tant que telle pour générer les graphiques, car le code à écrire est très lourd. On utilisera un module de la librairie Matplotlib qui fonctionne comme une interface pour cette librairie et qui permet d’alléger grandement l’écriture du code Python.
Ainsi...
Le fonctionnement de Matplotlib
1. Architecture de Matplotlib
Avant de commencer à utiliser le module Pyplot, voyons le fonctionnement de Matplotlib et sa définition d’un graphique. Pour commencer, il faut savoir que Matplotlib est organisé en trois couches (layers en anglais) empilées les unes sur les autres, dont voici un schéma :
Plus une couche est basse, plus on dit qu’elle est bas niveau. Pour un langage de programmation, par exemple, quand on dit qu’il est bas niveau cela signifie qu’il est proche de la machine et qu’on devra prendre en compte les adresses mémoires et d’autres caractéristiques de la machine. Cela n’est pas du tout le cas avec un langage haut niveau, où l’on code sans prendre en compte les caractéristiques de la machine. De ce fait, il est plus simple de programmer dans un langage haut niveau que dans un langage bas niveau, mais les possibilités d’optimisation sont restreintes pour le langage haut niveau par rapport au langage bas niveau.
Pour Matplotlib, la couche de plus bas niveau ici est la couche Backend (arrière-plan en français). Chaque couche est capable de communiquer avec la couche en dessous d’elle, de plus bas niveau, et de lui envoyer des informations. En revanche, la couche de plus bas niveau n’a pas conscience des couches qui sont au-dessus d’elle. La couche Backend est donc la couche...
La création d’un premier graphique simple
1. Préparer son jeu de données
Avant de commencer à visualiser ses données, il est important de les nettoyer, c’est-à-dire de gérer les valeurs manquantes et les lignes dupliquées, que nous avons découvertes dans le chapitre sur Pandas.
Visualisons le nombre de données manquantes par variable du jeu de données sur les Jeux olympiques.
Code
import pandas as pd
donnees=pd.read_csv("../datasets/120-years-of-olympic-history-
athletes-and-results.csv", index_col=[1])
donnees.isna().sum()
Rappel : pour lire le fichier, dans notre exemple, nous allons le chercher, comme précédemment, dans le dossier datasets, qui se trouve un cran plus haut que le dossier notebooks dans lequel nous travaillons. Ainsi, le ../datasets permet de dire à Python de sortir du dossier notebooks puis d’aller dans le dossier datasets chercher le fichier CSV.
Aperçu du résultat
Age 9474
Height 60171
Weight 62875
Medal 231333
Il y a quatre variables avec des données manquantes. Il faut savoir que certaines fonctions graphiques ignorent par défaut les individus ou observations contenant des valeurs manquantes, donc sans le savoir, vous travaillez sur un sous-ensemble de vos données. Il existe aussi des fonctions graphiques qui génèrent des erreurs lorsqu’il y a des valeurs manquantes dans la variable qui vous intéresse. Ainsi, il est important de traiter ces valeurs manquantes selon l’objectif de la visualisation.
Pour la variable Medal (médaille), les valeurs manquantes signifient que l’athlète n’a pas gagné de médaille. On peut remplacer ces valeurs manquantes par la chaîne de caractères None, qui signifie "aucune médaille gagnée". Ainsi, il n’y aura plus de valeurs manquantes dans cette variable et en plus, nous pourrons considérer la valeur None comme une modalité de notre variable qualitative Medal (si nous laissions les valeurs à NaN, ces athlètes seraient tout simplement ignorés).
Pour remplacer des valeurs manquantes par du texte, on utilisera...
Les différents types de graphes
1. Types de graphiques selon les types de variables (quantitatives et qualitatives)
Nous l’avions vu précédemment avec la librairie Pandas et la méthode describe(), les statistiques descriptives ne sont pas les mêmes sur les variables quantitatives (valeurs quantifiables) et les variables catégorielles ou qualitatives (des colonnes de dataframe contenant des modalités).
Nous avions pu constater que dans notre tableau se trouvaient trois variables quantitatives (âge, poids, taille) et le reste des variables étaient qualitatives (sexe, équipe, saison, etc.).
Il en va de même pour les types de graphiques. On ne peut pas utiliser les mêmes types de graphiques sur des variables qualitatives et quantitatives. Par exemple, les nuages de points que nous tracions précédemment se faisaient sur les variables âge, poids et taille. Cela n’est pas anodin, un nuage de points ne peut que se faire sur des variables quantitatives.
Nous allons voir dans ce chapitre quelques types de graphiques disponibles dans Matplotlib et les types de variables qu’ils peuvent représenter. Nous verrons un ensemble de graphiques plus complet dans le chapitre sur l’utilisation de la librairie Seaborn.
Ici, nous allons voir les trois types de graphiques les plus utilisés en analyse de données pour avoir une première vision de ses données : les scatterplots (nuages de points), les bargraphs (diagrammes à barres) et les boxplots (boîtes à moustaches).
2. Scatterplot
Le scatterplot (ou nuage de points en français) est un type de graphique très utilisé pour représenter deux variables quantitatives. En fait, précédemment, nous avons créé un nuage de points avec la fonction plot(), en retirant les lignes qui reliaient les points.
Le but de ce type de graphique est d’avoir deux axes x et y quantitatifs, avec des nombres, et de placer des points aux coordonnées x et y. Il existe une fonction dédiée pour créer des scatterplots, qui s’appelle scatter(). En clair, si vous souhaitez représenter deux variables quantitatives sur un graphique, notamment pour essayer de trouver une relation entre ces deux variables, le nuage de points est le graphique à utiliser.
La syntaxe...