Sélectionner une page

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