• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Mis à jour le 21/12/2018

Réalisez de beaux graphiques avec Seaborn

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Seaborn  est une librairie qui vient s'ajouter à Matplotlib, remplace certains réglages par défaut et fonctions, et lui ajoute de nouvelles fonctionnalités. Seaborn vient corriger trois défauts de Matplotlib:

  • Matplotlib, surtout dans les versions avant la 2.0, ne génère pas des graphiques d'une grande qualité esthétique.

  • Matplotlib ne possède pas de fonctions permettant de créer facilement des analyses statistiques sophistiquées.

  • Les fonctions de Matplotlib ne sont pas faites pour interagir avec les Dataframes de Panda (que nous verrons au chapitre suivant).

Seaborn fournit une interface qui permet de palier ces problèmes. Il utilise toujours Matplotlib "sous le capot", mais le fait en exposant des fonctions plus intuitives. Pour commencer à l'utiliser, rien de plus simple.

import seaborn as sns
sns.set()

x = np.linspace(0, 10, 500)
y = np.random.randn(500)
plt.plot(x,y)
Graphique généré par Seaborn
Graphique généré par Seaborn

Qu'en pensez-vous ? Trouvez-vous celui-ci plus agréable à l'œil ?

Seaborn nous fournit aussi des fonctions pour des graphiques utiles pour l'analyse statistique. Par exemple, la fonctiondistplot  permet non seulement de visualiser l'histogramme d'un échantillon, mais aussi d'estimer la distribution dont l'échantillon est issu.

sns.distplot(y, kde=True);
Estimation d'une distribution
Estimation d'une distribution

Imaginons que nous voulons travailler sur un ensemble de données provenant du jeu de données "Iris", qui contient des mesures de la longueur et la largeur des sépales et des pétales de trois espèces d'iris. C'est un jeu de données très souvent utilisé pour se faire la main sur des problèmes de machine learning.

iris = sns.load_dataset("iris")
iris.head()

Pour voir les relations entre ces caractéristiques, on peut faire des graphiques par paire :

sns.pairplot(iris, hue='species', size=2.5);

Corrélations par pair
Corrélations par paire

Prenez le temps d'étudier ce graphique.

Pourquoi les graphes sur la diagonale sont-ils des histogrammes ? Que pouvez-vous dire des relations entre les différentes caractéristiques ? Et sur les différences entre les espèces ?

La diagonale est traitée différemment, car tracer une variable en fonction d'elle-même n'aurait aucun intérêt. À la place,  sns.pairplot  trace un histogramme des données en fonction de la variable en question pour chaque classe de données. 

Ici nous voyons par exemple que les variables  petal_length  et  petal_width  permettent de bien discriminer l'espèce Setosa des autres. Autant sur les nuages de points de la troisième et la quatrième ligne/colonne, ainsi que sur les histogrammes 3 et 4, les points et les barres en bleues sont distinctes des barres des autres couleurs. Ainsi, si nous voulions créer un algorithme pour détecter les setosa, nous utiliserions certainement  petal_length  et  petal_width  de manière prédominante.

Nous pouvons aussi voir la distribution jointe de deux caractéristiques :

with sns.axes_style('white'):
    sns.jointplot("petal_length", "petal_width", data=iris, kind='reg')
Distribution jointe
Distribution jointe

Nous n'avons pas le temps ici de plonger en détail dans toutes les possibilités offertes par Seaborn. N'hésitez pas à découvrir ses fonctions par vous-même dans la documentation.

Exemple de certificat de réussite
Exemple de certificat de réussite