Basiques Python : Data visualisation avec matplotlib & seaborn

Manipuler des dataframe avec python c’est une chose. Faire parler les chiffres en est une autre. On parle alors de Data visualisation. Python propose des librairies très puissantes (matplotlib & seaborn) pour des supports de visualisation comme des diagrammes en bâton (Bar chart), des diagrammes circulaires (Pie chart) ou encore les fameuses boîtes à moustache (Box plot).

Cet article vous permettra de mettre en place rapidement des graphiques qui illustreront vos analyses ! Les exemples mentionnés ci-dessous permettent d’analyser un dataset (données sur le Black friday) que vous pouvez télécharger pour vous exercer.

# Je charge ici le fichier que je viens de télécharger
import pandas as pd
import numpy as np
black_friday = pd.read_csv("BlackFriday.csv")

# On commence par importer la librairie maptplotlib
import matplotlib.pyplot as plt

Préparation de la donnée

# On va créer un dataframe avec les données groupées par tranche d'âge
age_groupe = black_friday.groupby("Age")

# On souhaite connaître le volume des ventes réalisées par catégorie d'âge
achats_clients=dict() # On initialise un dictionnaire
for age,group in age_groupe:# On lance un boucle for pour compléter alimenter le dictionnaire avec la donnée
    achats_clients[age]=sum(group["Purchase"]) 

# On vérifie le dictionnaire
achats_clients

Créer le premier graphique avec plt.plot

# Je souhaite représenter les volumes de ventes en fonction des tranches d'âge
plt.plot(list(achats_clients.keys()),list(achats_clients.values())) # On convertit en liste avec list() les "keys" et "values" du dictionnaire
plt.draw() # j'affiche mon graphique

Ajouter des points dans le graphique avec marker= »o »

# A savoir il est possible d'afficher des points pour une meilleure lisibilité avec marker="o"
plt.plot(list(achats_clients.keys()),list(achats_clients.values()),marker="o")

# A savoir il est possible de n'afficher que les points avec linestyle=""
plt.plot(list(achats_clients.keys()),list(achats_clients.values()),marker="o", linestyle="")

Ajouter un titre avec plt.title et des annotations pour les axes avec plt.xlabel et plt.ylabel

plt.plot(list(achats_clients.keys()),list(achats_clients.values()),marker='o',linestyle="")
plt.xlabel("Catégorie d'âge")
plt.ylabel("Somme totale des ventes")
plt.title("Somme totale des ventes effectuées par catégorie d'âge",y=1.1) #y= pour ajuster la hauteur du titre

plt.draw()

Créer rapidement un nuage de points avec plt.scatter

# Scatter permet de créer directement un nuage de point et fonctionne aussi avec des dictionnaires
plt.scatter(achats_clients.keys(),achats_clients.values())

Agrandir son graphique avec plt.rcParams

#Agrandir son nuage de point
plt.rcParams["figure.figsize"]=[16,9]
plt.scatter(achats_clients.keys(),achats_clients.values())

Ajouter de la couleur à son graphique avec cmap= » »

#Ajouter des couleurs au nuage de points
plt.rcParams["figure.figsize"]=[16,9]
plt.scatter(achats_clients.keys(),achats_clients.values(), c=list(achats_clients.values()), cmap="seismic") #Pour trouver d'autres couleurs : https://matplotlib.org/users/colormaps.html
plt.xlabel("Catégorie d'âge")
plt.ylabel("Somme totale des ventes")
plt.title("Somme totale des ventes effectuées par catégorie d'âge",y=1.1) #y= pour ajuster la hauteur du titre
plt.draw()

Ajouter une échelle à votre graphique avec plt.colorbar()

#Comment ajouter une échelle
#Ajouter des couleurs au nuage de points
plt.rcParams["figure.figsize"]=[16,9]
plt.scatter(achats_clients.keys(),achats_clients.values(), c=list(achats_clients.values()), cmap="seismic")
plt.xlabel("Catégorie d'âge")
plt.ylabel("Somme totale des ventes")
plt.title("Somme totale des ventes effectuées par catégorie d'âge",y=1.1) #y= pour ajuster la hauteur du titre
plt.colorbar(orientation="horizontal")
plt.draw()

Exporter son graphique au format .png avec plt.savefig

plt.rcParams["figure.figsize"]=[16,9]
plt.scatter(achats_clients.keys(),achats_clients.values(), c=list(achats_clients.values()),marker='D', cmap="seismic",s=100)
plt.xlabel("Catégorie d'âge")
plt.ylabel("Somme totale des ventes")
plt.title("Somme totale des ventes effectuées par catégorie d'âge",y=1.1) #y= pour ajuster la hauteur du titre
plt.colorbar()
plt.savefig("mongraph.png", bbox_inches="tight") #pour enregistrer le graph dans de bonne proportion
plt.draw()

Créer un bar plot avec plt.bar

# Je vais cette fois chercher les nombre de ventes en fonction du sexe de l'acheteur
data = black_friday["Gender"].value_counts() #pour compter les valeurs uniques

# Je paramètre mon bar plot
plt.rcParams["figure.figsize"]=[16,9]
plt.bar(data.index,data, color=["blue","red"])
plt.xlabel("Sexe de l'acheteur")
plt.ylabel("Nombre d'acheteur")
plt.title("Nombre de ventes en fonction du sexe de l'acheteur")

# J'affiche mon graph
plt.draw()

Créer un box plot avec plt.boxplot

plt.rcParams["figure.figsize"]=[16,9]
plt.boxplot(black_friday["Purchase"])
plt.draw()

# Pour changer la valeur de l'abscisse 
plt.xticks([1],["Ventes"]) 
plt.draw()

Créer un pie chart avec plt.pie

# Je vais chercher la donnée 
data= black_friday["Age"].value_counts()

plt.rcParams["figure.figsize"]=[9,9]
plt.pie(data.values, labels=data.index, autopct='%1.1f%%',shadow=True, startangle=90)
plt.draw()

Afficher 2 ou plusieurs graphiques dans une même fenêtre avec plt.subplot()

plt.rcParams["figure.figsize"]=[16,9]
plt.subplot(211)
plt.bar(data.index,data, color=["blue","red"])
plt.xlabel("Sexe de l'acheteur")
plt.ylabel("Nombre d'acheteur")
plt.title("Coucou les amis")
plt.subplot(212)
plt.boxplot(black_friday["Purchase"])
plt.xticks([1],["Ventes"]) 
plt.tight_layout()
plt.draw

Créer un chart box avec seaborn

import seaborn as sns
sns.boxplot(x="Gender",y="Purchase", hue="Age", data=black_friday, palette="muted")
plt.legend(bbox_to_anchor=(1.05,1),loc=2, borderaxespad=0)
plt.draw()

Créer un chart bar avec seaborn

sns.countplot(x="Age",hue="Gender", data=black_friday, palette="Set1")

Créer un nuage de points avec seaborn

sns.catplot(x="Age",y="Purchase", hue="Gender", data = subset, kind="swarm")
plt.draw()

Laisser un commentaire