L’un des processus de la data science est la visualisation des données. Elle permet de comprendre comment les variables sont distribuées et nous donne une idée claire de ce que signifie l’information, en lui donnant un contexte visuel à travers des cartes ou des graphiques.
La science des données est un domaine interdisciplinaire qui utilise des méthodes, des processus, des algorithmes et des systèmes scientifiques pour extraire des connaissances et des informations à partir de données structurées et non structurées.
L’un des processus de la data science est la visualisation des données. Elle permet de comprendre comment les variables sont distribuées et nous donne une idée claire de ce que signifie l’information, en lui donnant un contexte visuel à travers des cartes ou des graphiques. Les techniques de visualisation rendent les données plus naturelles à comprendre pour l’esprit humain et facilitent donc l’identification des tendances, des modèles et des valeurs aberrantes au sein de grands ensembles de données.
Il existe plusieurs approches différentes pour visualiser une distribution, en fonction des données et de leur objectif.
Divers graphiques et tableaux peuvent être utilisés dans la visualisation des données, et chacun a ses avantages et ses inconvénients relatifs.
Il est important de comprendre ces facteurs afin que vous puissiez choisir la meilleure approche pour votre objectif.
Python fournit aux Data Scientists divers packages à la fois pour le traitement des données et la visualisation. Dans ce tutoriel, nous allons utiliser certains des packages de visualisation bien connus de Python comme: Pandas, Matplotlib et Seaborn.
Il existe plusieurs types de format graphique pour la visualisation des données.
Certains des types les plus courants sont:
- Bar Chart
- Pie Chart
- Stacked Area Chart
- Line Chart
- Histogram
- Scatter Plot
- Regression Plot
Graphique à barres (Bar Chart)
Les graphiques à barres affichent les données par catégories (verticalement ou horizontalement) – pour analyser la fréquence, le rang et l’écart. Par exemple, un graphique à barres est idéal pour sélectionner le nombre de voitures par marque ou pour afficher la différence entre les prix des voitures de même marque selon le type de carburant. Vos barres peuvent être côte à côte ou empilées (graphique à barres groupées).
Quelques caractéristiques pour le graphique à barre :
- Intuitif
- Approprié pour un public non-technique
- Communique clairement vos intentions
Comment créer un graphique à barres avec Matplotlib
Dans le module PyPlot de Matplotlib il y a une fonction qui permet de créer un graphique à barres très facilement. Pour notre graphique à barres, nous aimerions tracer le nombre de voitures par marque.
Dans ce tutoriel nous allons utiliser l’ensemble de donnée ‘CarPriceAssignement’ Cet ensemble de données se compose de trois types d’entités:
- la spécification d’une automobile en termes de diverses caractéristiques,
- sa cote de risque d’assurance attribuée,
- ses pertes d’utilisation normalisées par rapport aux autres voitures.
La deuxième note correspond au degré auquel l’automobile est plus risquée que son prix ne l’indique. Il contient 205 lignes de données de 26 colonnes.
Nous allons créer un ensemble de données de deux colonnes à partir de l’ensemble de données ‘CarPriceAssignement’.
Importer les bibliothèques nécessaires
import matplotlib.pyplot as plt # pour la visualisation
import pandas as pd # pour importer et manipuler le jeu de donnée
%matplotlib inline
#Chargement des données dans un fichier .csv dans le même dossier
dataset = pd.read_csv('CarPriceAssignement.csv')
#Afficher la dimension de notre jeu de donnee
dataset.shape
(205, 26)
Lorsque nous vérifions la dimension de notre jeu de données, nous pouvons remarquer qu’il est composé de 26 colonnes et contient 205 lignes.
# Visualisation des cinq premières ligne
dataset.head()
# Affichage des noms des colonnes
dataset.columns
Index([‘car_ID’, ‘symboling’, ‘CarName’, ‘fueltype’, ‘aspiration’, ‘doornumber’, ‘carbody’, ‘drivewheel’, ‘enginelocation’, ‘wheelbase’, ‘carlength’, ‘carwidth’, ‘carheight’, ‘curbweight’, ‘enginetype’, ‘cylindernumber’, ‘enginesize’, ‘fuelsystem’, ‘boreratio’, ‘stroke’, ‘compressionratio’, ‘horsepower’, ‘peakrpm’, ‘citympg’, ‘highwaympg’, ‘price’], dtype=’object’)
Afficher le nombre de voiture par marque
# Récupération du nombre de voiture par marque
Small_data = dataset['CarName'].value_counts()
# Visualisons notre serie de donnee
Small_data.head()toyota 32
nissan 18
mazda 17
mitsubishi 13
honda 13
Name: CarName, dtype: int64
# Convertir notre serie en DataFrame
Small_data = pd.DataFrame(Small_data)
# Visualisation des 5 priemiere lignes
Small_data.head()
# Renommer notre colonne
Small_data = Small_data.rename(columns={"CarName": "Nombre de voiture"})
# Visualisation des 5 premiere lignes
Small_data.head()
# Ajouter le titre "Nom des voitures" dans notre DataFrame
Small_data['Marque'] = Small_data.index
# Visualisons les 5 premier lignes de notre portion du jeux de donnee
Small_data.head()
# Supprimons l'index
Small_data.reset_index(drop=True, inplace=True)
# Visualisation des 5 premiere lignes
Small_data.head()
Afficher un graphique à barres à l'aide Matplotlib
Nous allons sélectionner la colonne « Marque » pour l’axe des x et le nombre de voitures vendues pour l’axe des y, qui est la «hauteur».
plt.bar(x=Small_data['Marque'], #Selectionner la "Marque" pour l'axe des x
height=Small_data['Nombre de voiture'] #Selectionner le "Nom de voiture" pour l'axe des y
)
Maintenant, bien que ce graphique affiche les informations correctes, nous devons améliorer son apparence.
Nous allons changer l’orientation des textes de l’axe de x.
plt.bar(x=Small_data['Marque'],
height=Small_data['Nombre de voiture'])
plt.xticks(rotation=45) # Changer la rotation a 45 degre
Nous avons travaillé avec Matplotlib, qui, en tant que bibliothèque de visualisation, a un paramètre par défaut pour le formatage des graphiques, y compris ‘Police’, ‘Taille de la police’, ‘Thèmes d’arrière-plan’, etc.
Tout d’abord, nous voulons pouvoir lire toutes les étiquettes sur notre axe x et pour le moment elles se chevauchent.
La visualisation des données ne consiste pas seulement à créer un graphique, mais également à styliser notre graphique de manière convaincante et attrayante.
Pour des visuels plus agréables, il est possible de précharger la bibliothèque Seaborn, une bibliothèque de visualisation de données Python basée sur matplotlib. Elle fournit une interface de haut niveau pour dessiner des graphiques statistiques attrayants et informatifs.
Nous allons importer Seaborn et définir son apparence pour écraser celle définie par défaut dans Matplotlib.
NB: Ce n’est pas obligatoire de récupérer une portion du jeu de données pour réaliser ce graphique.
import seaborn as sns # importer Seaborn sous le nom de sns
sns.set() # écraser l’aspect ‘matplotlib’
plt.rcParams['figure.figsize'] = [16, 8]
#spécifier l'axe des x et l'axe des y
ax = dataset['CarName'].value_counts().plot(
kind='bar', # Pour créer un graphique à barres avec matplotlib, vous pouvez utiliser la fonction 'bar' ou barh .
stacked=True,
figsize=(16, 8),# déterminer la taille du graphique
colormap='Blues_r', # la couleur des barres
rot=45 # faire pivoter les étiquettes pour l'axe des x a 45 degre
)
ax.title.set_text('Nom des voitures') # Donner un nom au graphique
plt.xlabel('Noms des voitures', fontweight = 'bold') # Preciser le nom de l'axe des x et mettre en gras le text
plt.ylabel('Nombre de voitures', fontweight = 'bold') # Preciser le nom de l'axe des y et mettre en gras le text

Maintenant on commence à voir de très grandes différences par rapport à notre premier graphique. On peut remarquer qu’il y a plus de voitures de la compagnie Toyota dans ce jeu de données et une faible quantité de voitures de la compagnie Mercury.
Nous allons maintenant ajouter le nombre de voiture sur chaque bar
#spécifier l'axe des x et l'axe des y
s = dataset['CarName'].value_counts().head(len(dataset['CarName'].unique()))
ax=s.plot.bar(
width=.8, # Largeur des bar
color='#092a5e', # la couleur des barres
fontsize = 12, # Definir la dimension du texte
rot=45 # faire pivoter les étiquettes pour l'axe des x a 45 degre
)
# Titre de notre graphique
ax.set_title(
'Nombre de voitures par marque',
loc ='center', # Positionner au centre
fontsize=16, # Dimension du texte
fontweight='bold' # type de carachterer
)
for i, v in s.reset_index().iterrows():
ax.text(i, v.CarName + 0.2 , v.CarName, color='gray', alpha=0.7)
Graphique à barres groupées
Les graphiques à barres groupées sont des graphiques à barres dans lesquels plusieurs ensembles d’éléments de données sont comparés. Comme pour les graphiques à barres de base, des versions verticales et horizontales de graphiques à barres groupées sont disponibles.
Nous allons comparer le prix de chaque marque de voiture selon le type de carburant.
Si vous voulez en savoir plus vous pouvez consulter la documentation catplot de seaborn et legend pour matplotlib.
g = sns.catplot(
data=dataset, # peciser le jeu de donnee
kind="bar", # preciser le type de graphique
x="CarName", # selectionner le nom des voiture pour l'axe dex x
y="price", # selectionner le prix des voitures pour l'axe des y
hue="fueltype", # groupe les voiture selon le type de carburant
ci="sd", # sauter le bootstrap et dessiner l'écart type des observations
palette="dark", # Couleurs à utiliser pour les différents niveaux de la variable de teinte
alpha=.9, # La transparence alpha de l'arrière-plan de la légende
height=6,
aspect=10.7/4.27, # aspect * height donne la largeur de chaque facette en pouces,
legend_out=False, # empeche que la legende soit dessiner à l'extérieur du graphe.
)
g.set_xticklabels(
rotation=45, # Tourné le texte a 45 degré
fontsize=13 # Definir la taille de texte
)
g.fig.subplots_adjust(top=0.9) # donner un peu de marge au titre du graphique
# Le titre du graphique
g.fig.suptitle(
'Comparaison des prix des voitures de même marque selon le type de carburant', # Titre du graphique
fontsize=20, # Definir la taille a 20
fontweight='bold' # Format en gras
)
plt.legend(
loc='upper left', # Position de notre legend
title="Type de Carburant", # Titre des categories
fontsize="large" # Taille des texte du legend
)
g.set_axis_labels(
"Nom des voitures", # Nom de l'axe des x
"Prix des voitures", # Nom de l'axe des y
size=18 # Taille des texte
)

Conclusion
Dans ce tutoriel, nous avons vu ensemble les bases de matplotlib afin de pouvoir tracer un graphique à barres.Et comment utiliser Seaborn pour écraser la configuration par défaut dans Matplotlib lorsque vous avez besoin de quelque chose de plus spécialisé. Nous avons commencé avec des graphiques simples et des graphiques horizontaux, puis nous avons continué à les personnaliser. Seaborn, Matplotlib et son module PyPlot sont des outils essentiels pour les data scientists qui programment en Python pour la visualisation des données. Cependant, une bonne maîtrise de ces outils nécessite un certain temps.
