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()