virtual1

Visualisation des données (Diagramme Circulaire)

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

Dans le tutoriel précédent nous avions 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é. 

Dans ce tutoriel nous allons voir ensemble comment afficher un graphique circulaire. 

Graphique Circulaire

Un graphique circulaire est un type de visualisation de données utilisé pour illustrer les proportions numériques dans les données. C’est un type de diagramme approprié pour les publics
non-techniques et largement utilisé. Cependant il ne faut pas l’utiliser lorsque les données sont égales a 100% ou s’il ya trop de catégories dans les données

# required libraries
import pandas as pd # data manipulation
import matplotlib.pyplot as plt # main visualization module: matplotlib's
pyplot
import seaborn as sns # visualizations' top level. seaborn's style on top
of matplotlib
sns.set()
#Chargement des données dans un fichier .csv dans le même dossier
dataset = pd.read_csv('CarPriceAssignment.csv')
#Afficher la dimension de notre jeu de donnee
dataset.shape # Dimension du jeux de donnees
(205, 26)
# Visualisation des cinq premières ligne
dataset.head()

On peut remarquer qu’on a beaucoup de catégories dans notre jeux de données. Le type de carburant (fueltype), la carrosserie (carbody) peuvent être utilisés pour notre exemple.

from collections import Counter 
# Utiliser pour garder le nombre d’éléments dans un itérable
print(Counter(dataset['fueltype']))
Counter({'gas': 185, 'diesel': 20})
print(Counter(dataset['carbody']))
Counter({'sedan': 96, 'hatchback': 70, 'wagon': 25, 'hardtop': 8,
'convertible': 6})

Afficher la proportion de voiture par type de carrosserie

Pour afficher notre diagramme circulaire il nous avons besoin de deux liste:
    ● Le nom de chaque type de carrosserie (label)   
    ●La proportion de voitures pour chaque type de carrosserie.

Choix des palettes de couleurs

Seaborn facilite l’utilisation de couleurs adaptées aux caractéristiques de vos données et à vos objectifs de visualisation. Il a en effet six variations de la palette de matplotlib, appelées deep, muted, pastel, bright, dark, et colorblind. Pour en savoir plus consulter la documentation de seaborn ici

Pour notre graphique nous allons utiliser la variation colorblind.

sns.set_palette('colorblind') # retourner la couleur des proportion par
défaut
# Afficher la proportion de chaque type de carrosserie
print(Counter(dataset['carbody']))
Counter({'sedan': 96, 'hatchback': 70, 'wagon': 25, 'hardtop': 8,
'convertible': 6})
#Une autre methode pour afficher la proportion de chaque type de
carroserie
dataset['carbody'].value_counts()
sedan 96
hatchback 70
wagon 25
hardtop 8
convertible 6
Name: carbody, dtype: int64

Nous allons récupérer le nom de chaque type de carrosserie dans une liste puis leur proportion dans une autre liste.

# Garder la proportion de chaque type de carrosserie dans une variable
carbody_count = dataset['carbody'].value_counts()
carbody_count
sedan 96
hatchback 70
wagon 25
hardtop 8
convertible 6
Name: carbody, dtype: int64
# Afficher le type du variable
type(carbody_count)
pandas.core.series.Series
# Convertir notre serie en array
import numpy as np
nbre_voiture = np.array(carbody_count)
# Afficher le nom de chaque type de carrosserie
label=dataset['carbody'].value_counts().index
label
Index(['sedan', 'hatchback', 'wagon', 'hardtop', 'convertible'],
dtype='object')
# ajouter le nom de chaque type de carrosserie dans une liste
labels = []
for index in carbody_count.index:
labels.append(index)
labels
['sedan', 'hatchback', 'wagon', 'hardtop', 'convertible']

Maintenant nous avons les deux liste (Nombre de chaque type de carrosserie et la proportion de voiture pour chaque type de carrosserie), on peut afficher notre graphique.

plt.rcParams['figure.figsize']=[16,8] # Dimension du graphique
plt.pie(nbre_voiture, labels = labels, autopct = '%1.2f%%')
plt.legend(title = "Proportion des voitures par type de carrosserie")
plt.show()

Afficher la proportion de voiture par type de carburant

Nous allons afficher la proportion de voiture par type de carburant en utilisant un peut plus d’arguments pour donner plus de style a notre graphique.

#spécifier l'axe des x et l'axe des y
ax = dataset['fueltype'].value_counts().plot(
kind='pie', # Pour créer un graphique circulaire avec matplotlib,
vous pouvez utiliser la fonction 'pie'
figsize=(16,8),# déterminer la taille du graphique
# Mise en forme des étiquettes supplémentaires à l'aide de textprops.
Notez que c'est un dictionnaire.
textprops = {'size' : 'x-large', # Dimension des textes pour afficher
les proportions
'fontweight' : 'bold', # Afficher les proportion en
gras
'rotation' : '30', # Tourner les textes a 30 degres'color' : 'w'}, # Définir la couleur
wedgeprops={'linewidth': 3.0, 'edgecolor': 'white'}, # définir la
largeur des lignes de bordure compensées égale à 3
autopct = '%.2f%%', #étiqueter les coins avec leur valeur numérique.
L’étiquette sera placée à l’intérieur du proportion
labels=dataset['fueltype'].values, #Fournir les étiquettes pour chaque
type de carrosserie
legend = True,
)
ax.set_title(
'Proportion des voitures par type de carburant', # Titre du graphique
loc ='center', # Positionner au centre
fontsize=16, # Dimension du texte
fontweight='bold' # type de caractere
)

Afficher la proportion de voiture par type de carrosserie

Nous allons afficher le même graphique précédent avec quelques modifications.

# plt.rcParams['figure.figsize']=[16,8]
#spécifier l'axe des x et l'axe des y
ax = dataset['carbody'].value_counts().plot(
kind='pie', # Pour créer un graphique circulaire avec matplotlib, vous
pouvez utiliser la fonction 'pie'
figsize=(16,8),# déterminer la taille du graphique
labels=dataset['carbody'].value_counts().index, # Préciser les labels# Mise en forme des étiquettes supplémentaires à l'aide de textprops.
Notez que c'est un dictionnaire.
textprops = {'size' : 'x-large', # Définir la dimension du texte
'fontweight' : 'bold', # Afficher les proportion en
gras
'rotation' : '0', # Tourner les textes a 30 degres
'color' : 'w'}, # Définir la couleur
autopct = '%.2f%%',#étiqueter les coins avec leur valeur numérique.
L’étiquette sera placée à l’intérieur du proportion
explode = (0.03, 0.02, 0.02, 0.03, 0.03) # Spécifier la fraction de
décalage pour chaque proportion
)
ax.set_title(
'Proportion des voitures par type de carrosserie', # Le titre du
graphique
loc ='center', # Positionner au centre
fontsize=16, # Dimension du texte
fontweight='bold' # type de caractere
)
plt.legend()

Je conclus cette nouvelle sortie en vous donnant rendez-vous ultérieurement pour un autre tutoriel sur la visualisation des données.

Votre commentaire

Votre adresse email reste confidentiel.