
À ce stade, nous avons réuni de nombreuses informations sur nos clients, que nous pourrions mixer et représenter au sein de différents graphiques.
Par exemple, plutôt que d’avoir l’information sous forme de tableau, il serait intéressant de représenter le chiffre d'affaires total par agence. On peut aussi regarder le taux d’endettement de nos clients en fonction de leur revenu, pour voir si une tendance se dégage.
Il nous faut donc une librairie pour réaliser ces différents graphiques avec Python. Il en existe une multitude, et c’est parfois un peu compliqué de comprendre l’intérêt et la plus-value de l’une par rapport à une autre. C’est pourquoi je vous propose de regarder en détail la librairie principalement utilisée pour réaliser des visualisations : Matplotlib. Enfin, nous allons plutôt utiliser pyplot qui est inclus dans Matplotlib.
Voilà comment importer cette dernière :
import matplotlib.pyplot as pltChaque représentation graphique a une fonction correspondante avec Matplotlib :
nuage de points ou scatter plot, en anglais :scatter() ;
diagrammes en ligne ou en courbes :plot() ;
diagrammes en barres :bar() ;
histogrammes :hist() ;
diagrammes circulaires :pie() .
Que diriez-vous de découvrir une application concrète de ces fonctions ? C’est parti !
Cherchons à représenter un des graphiques cités ci-dessus : représenter le taux d’endettement en fonction du revenu. Ces deux variables sont numériques, sans évolution dans le temps : nous allons donc tracer un nuage de points, via la fonction scatter . Cette fonction nécessite de définir x et y, qui sont les valeurs à placer en abscisse et en ordonnée :
plt.scatter(prets['revenu'], prets['taux_endettement'])... pour obtenir le résultat suivant :

Il existe de nombreuses options pour personnaliser un nuage de points. On peut modifier :
la couleur des points, en utilisant l’argumentcolor ouc ;
la taille des points, via l’argumentsize ous ;
le type de marqueur via l’argumentmarker ;
la transparence des points via l’argumentalpha .
Reprenons le même graphique, avec des croix rouges dont la taille aura été modifiée, et avec 50 % de transparence :
plt.scatter(prets['revenu'], prets['taux_endettement'],
s=60, alpha=0.5, c='red', marker='P')... et la visualisation correspondante :

Cette liste n’est qu’une infime partie de ce que vous pouvez modifier… Vous trouverez la liste complète des arguments sur la documentation officielle de la fonction.
On souhaite maintenant représenter le chiffre d'affaires total par agence. Comme nous l’avons vu précédemment, il existe deux possibilités pour cela : soit un diagramme à barres, soit un diagramme circulaire. Nous allons réaliser ces deux visualisations.
Là où nous autres francophones et amateurs de fromages voyons dans le diagramme circulaire un camembert, les anglo-saxons y voient plutôt une tarte (pie, en anglais) à découper en plusieurs parts ! C’est de là que provient le nom de la fonction permettant de tracer un diagramme circulaire :pie .
Son utilisation est très similaire à celle de scatter . Il y a deux arguments à préciser :labels , correspondant à la variable non numérique, celle sur laquelle ont été agrégées les données, et x, les valeurs agrégées correspondantes.
La première étape va donc être d’agréger les données :
data = prets.groupby('ville')['remboursement'].sum()
data = data.reset_index()Traçons à présent notre camembert à partir de ces données agrégées :
plt.pie(x=data['remboursement'], labels=data['ville'])... pour avoir le résultat suivant :

On peut également améliorer ce graphique en affichant textuellement le pourcentage associé à chaque “part”. Pour cela, il faut spécifier un format numérique via l’argumentautopct . Par exemple :
plt.pie(x=data['remboursement'], labels=data['ville'], autopct='%.2f%%')Explicitons rapidement ce format : il permet d’afficher la part du chiffre d'affaires total réalisé par chaque agence, avec 2 chiffres après la virgule, et suivie du caractère% .
L’alternative au diagramme circulaire est un diagramme à barres ! On peut représenter exactement la même information, mais avec une perspective différente.
Pour utiliser la fonctionbar , qui est l’implémentation de Matplotlib des diagrammes à barres, il faut préciser deux arguments :
x : les différentes valeurs de la variable non numérique, l’équivalent dulabels depie ;
height : les valeurs agrégées, équivalent du x de pie .
Représentons maintenant la même information – le chiffre d’affaires total par agence – via un diagramme à barres :
plt.bar(height=data['remboursement'], x=data['ville'])... pour obtenir :

data_sorted = data.sort_values('remboursement', ascending=False)
plt.bar(height=data_sorted['remboursement'], x=data_sorted['ville'])Un peu plus sympa comme ça, non ?

L’histogramme est particulièrement utile lorsqu’on souhaite avoir une idée de la distribution d’une variable, et donc particulièrement adéquat pour répondre à cette problématique. La fonction Matplotlib correspondante esthist . Il suffit de lui passer en paramètre la variable numérique dont on souhaite connaître la distribution :
plt.hist(prets['revenu'])On obtient ainsi :

En un coup d'œil, on peut déterminer, grâce à l’histogramme, que nous avons majoritairement des revenus modestes au sein de notre clientèle.
On souhaite suivre l’évolution du chiffre d'affaires sur les 4 premiers mois, pour voir la façon dont il varie, et éventuellement anticiper la suite.
Nous avons pour cela à notre disposition le chiffre d'affaires réalisé par notre banque sur les prêts de janvier à avril 2013 :

On a ici une évolution dans le temps, donc le choix de représentation le plus pertinent serait de tracer une courbe.
Pour ce faire, on utilise la fonctionplot de Matplotlib. Celle-ci prend deux arguments en entrée : les informations à mettre en abscisse, et celles à mettre en ordonnée. Voilà comment tracer l’évolution de notre chiffre d’affaires :
plt.plot(evolution_ca['date'], evolution_ca["chiffre d'affaire"])Nous avons eu un chiffre d’affaires en hausse globale sur le premier tiers de 2013 :

Voici par exemple le même graphique, avec des lignes rouges hachurées, où on ajoute un point à chaque date :
plt.plot(evolution_ca['date'], evolution_ca["chiffre d'affaire"],
marker='o', linestyle='--', color='red')Ça donne un autre style à notre graphique :

Ces différents graphiques sont sympas, mais ils ne respectent pas vraiment les bonnes pratiques présentées précédemment...
C’est un excellent point ! En effet, il manque pas mal d’informations sur l’ensemble de ces graphiques… mais ne vous inquiétez pas, ce n’est pas un oubli de ma part, nous aurons l’occasion de voir comment corriger tout cela dans le prochain chapitre.
Nous avons 6 agences différentes avec plusieurs dizaines de clients par agence. Le responsable national souhaite avoir, en un seul graphique, une idée du comportement des agences en termes d’attribution de taux, en fonction du revenu.
Représenter le revenu en fonction du taux est assez simple : on peut faire cela via un nuage de points. Mais comment représenter, en plus, l’information de l’agence ?
En ajoutant une information supplémentaire à notre graphique, comme la couleur des points !
Cependant, il n’existe pas d’option par défaut avec Matplotlib pour mettre en couleur les points. On va être forcés de créer plusieurs graphiques – un par agence – qu’on va superposer sur une seule et même fenêtre graphique.
Laissez-moi vous montrer en vidéo comment réaliser cela :
Maintenant que vous savez tracer plusieurs graphiques dans une même fenêtre, je vous propose de mettre en pratique les connaissances acquises dans ce chapitre !

Vous êtes en train de préparer le reporting mensuel à présenter chaque fin de mois à votre responsable. La présentation devra comprendre certains graphiques clés : vous allez donc devoir utiliser vos compétences en data visualisation pour produire les différentes visualisations attendues.
Les graphiques à produire sont donc :
la proportion de chaque type de prêt ;
le bénéfice mensuel réalisé en fonction du revenu du client pour les prêts immobiliers ;
la distribution des bénéfices réalisés ;
le bénéfice mensuel total réalisé par agence.
Je vous invite à vous entraîner en vous rendant sur l’exercice.
Bien joué ! Voici la correction correspondante.
Matplotlib met à disposition une fonction par type de graphique souhaité :
plot : pour les courbes ;
bar : pour les diagrammes à barres ;
pie : pour les diagrammes circulaires ;
hist : pour faire des histogrammes ;
scatter : pour les nuages de points.
Personnalisez vos différents graphiques en utilisant les différents paramètres de chaque fonction.
Tracez différents graphiques sur une seule fenêtre graphique, pour ajouter des dimensions supplémentaires.
Je vous propose maintenant de plonger un peu plus en profondeur dans les possibilités offertes par Matplotlib pour personnaliser un graphique.