top of page

DATA VISUALISATION

Les deux bibliothèques les plus adaptées pour faire de la data visualisation à l'aide de graphiques sont matplotlib​ et seaborn.

 

Commençons par matplotlib, on y trouve dedans le module pyplot qui permet de tracer des graphiques. Nous verrons trois types de graphiques sur matplotlib : la courbe, le nuage de points et l'histogramme.

Importation de la bibliothèque :

import matplotlib.pyplot as plt # Renommage en plt

Les deux fonctions principales sont visualiser deux variables sont plot (courbe) et scatter (nuage de points). Elles s'utilisent à partir de deux listes, deux tableaux numpy ou deux colonnes d'un dataframe pandas. Attention, elles doivent avoir les mêmes dimensions (même nombre d'éléments).

plt.plot(x,y) # Courbe de x et y

plt.show # Affiche le graphique. Inutile si vous programmez dans un Notebook Jupyter.

plt.scatter(x,y) # Nuage de points de x et y

plt.show # Affiche le graphique. Inutile si vous programmez dans un Notebook Jupyter.

Il est évidement possible de personnaliser la courbe. Pour cela, il existe beaucoup de paramètres de personnalisation disponibles dans la fonction plot dont les principaux sont lw (épaisseur du trait), ls (style du trait) et c (couleur du trait).

Exemple :

plt.plot(x, y, lw=3, ls='--', c='red') # Courbe rouge en pointillé d'épaisseur 3

plt.show 

Sur matplotlib, il faut écrire ses graphiques dans ce qu'on appelle le cycle de vie d'une figure. C'est ce qui permet de gérer la figure que l'on veut afficher.

Syntaxe du cycle de vie d'une figure : 

plt.figure()

contenu de la figure (un ou plusieurs graphiques)

plt.show()

Exemple :

plt.figure(figsize=(20,10)) # Création de la figure dans laquelle on va tracer les courbes. figsize permet de changer la taille de la figure.

plt.plot(x, y, label='Courbe1') # On trace une première courbe

plt.plot(x, z, label='Courbe2') # On trace une deuxième courbe (dans la même figure)

plt.title('Titre de la figure')

plt.xlabel('Nom axe x')

plt.ylabel('Nom axe y')

plt.legend() # Ajout d'une légende. Ne pas oubliez de définir les noms de chaque courbe avec le paramètre label des deux fonctions plot.

plt.show()

On doit donc écrire autant de cycle de vie que l'on veut de figures.

Enfin, la fonction subplot permet de regrouper plusieurs graphiques côte à côte (dans un tableau qui n'est pas visible). Elle prend trois paramètres : le nombre de lignes, le nombres de colonnes et le numéro du graphique.

plt.subplot(2,1,1) # Le premier graphique (au dessus du deuxième)

plt.plot(x, y) # Premier graphique

plt.subplot(2,1,2) # Le deuxième graphique (en dessous du premier)

plt.plot(x, z) # Deuxième graphique

Il faut ajouter cela au cycle de vie de la figure :

plt.figure() # Création de la figure dans laquelle on va tracer les graphiques

# Premier graphique

plt.subplot(2,1,1) # Premier graphique du tableau 

plt.plot(x, y) 

plt.title('Graphique1')

# Deuxième graphique

plt.subplot(2,1,2) # Deuxième graphique du tableau 

plt.plot(x, z)

plt.title('Graphique2')

plt.show()

Dans un nuage de points, on veut parfois afficher les points d'une couleur différente selon leur valeur pour une variable catégorielle. On peut faire cela avec le paramètre c de la fonction scatter. Attention, les modalités de la variable catégorielle doivent être numériques, il faudra donc préalablement les recoder.

plt.scatter(x,y, c=var_categorie, alpha=0.5)  # Nuage de points dont la position est définie par les valeurs des variables x et y. La couleur de chaque point est définie selon la modalité de la variable var_categorie. x, y et var_categorie doivent évidement avoir les mêmes dimensions. alpha=0.5 permet de gérer la transparence des points.

plt.show()

Si on veut ajouter une légende (à quelle modalité correspond chaque couleur) :

classes = ['negatif', 'positif'] # Les valeurs pour la légende correspondant aux modalités (valeurs numériques) qui définissent la couleur

scatter = plt.scatter(x,y, c=var_categorie, alpha=0.5) 

plt.legend(handles=scatter.legend_elements()[0], labels=classes)

plt.show()

Enfin, une dernière fonction de matplotlib est la focntion hist. Elle permet de créer un histogramme pour voir la répartition (effectif) d'une variable quantitative.

plt.hist(x) # Si x est une liste.

data['nom colonne quantitative'].hist() # Si on n'a pas de liste mais une variable d'un dataframe (créée par exemple avec la fonction read_csv de pandas).

On peut aussi rajouter le paramètre bins pour indiquer le nombre de classes/colonnes de l'histogramme.

Passons maintenant à la bibliothèque seaborn. seaborn permet de créer de manière simple des représentations graphiques avancées et très informatives. Elle fonctionne avec les dataframes de pandas. Les fonctions de seaborn sont donc parfaitement adaptées si vous importez vos données avec les fonctions read_csv et read_excel du module pandas.

Importation de la bibliothèque :

import seaborn as sns # Renommage en sns.

 

Pour analyser des données, afin de voir les relations entre les variables d'un dataframe, on est souvent amené à faire des nuages de points pour chaque combinaisons possibles de variables quantitatives. Avec seaborn, la fonction pairplot permet de faire cela.

sns.pairplot(data) # Nuage de points entre chaque couple des variables quantitatives du dataframe + histogrammes pour chaque variable

sns.pairplot(data[['var1', 'var3', 'var5']]) # Même chose mais pour seulement quelques variables du dataframe.

Avec le paramètre hue, on peut indiquer une variable dont les modalités vont être utilisées pour colorier les points.

sns.pairplot(data, hue='sexe') # Colorie les points selon leur modalité pour la variable sexe. La variable sexe doit être dans le dataframe data.

Pour faire un nuage de points entre une variable catégorielle et une variable quantitative, on peut utiliser la fonction catplot.

sns.catplot(x='classe', y='age', data=nomdataframe) # Nuage de point des ages selon les catégories de la variable classe. data indique le nom du dataframe d'où proviennent les variables.

sns.catplot(x='classe', y='age', data=nomdataframe, hue='sexe') # Nuage de point des ages selon les catégories de la variable classe. Les points sont coloriés selon leur valeur pour la variable catégorielle sexe.

Enfin, pour voir la distribution d'une variable quantitative, on utilise la fonction distplot.

sns.distplot(data['age']) # Distribution de la variable age du dataframe data

Pour finir, la fonction heatmap est très intéressante pour visualiser le contenu d'un tableau en coloriant chaque cellule en fonction de sa valeur. Plus la valeur de la cellule est faible plus sa couleur sera froide et plus la valeur est élevée plus elle sera chaude.

On peut utiliser la fonction heatmap pour colorier une matrice de confusion.

sns.heatmap(data.corr()) # Permet de voir les variables du dataframe data qui sont les plus corrélées

On peut aussi l'utiliser pour voir la répartition des valeurs manquantes d'un dataframe.

sns.heatmap(data.isna()) # Chaque données est de couleur blanche si elle est manquante et de couleur noir si elle est présente.

sns.heatmap(data.isna(), cbar=False) # cbar=False permet d'enlever la barre de couleur servant de légende à la heatmap

Si les graphiques sont trop petits, vous pouvez utiliser l'option figsize de la fonction figure.

import matplotlib.pyplot as plt # Renommage en plt

plt.figure(figsize=(20,10))

sns.heatmap(data.isna())

bottom of page