1.
Définition
« Une image vaut mille mots » Confucius
La datavisualisation est un ensemble de techniques utilisées pour représenter
visuellement des informations clés sur un gros volume de données, afin d’en
permettre la compréhension et l’analyse.
2. Rappel
a. Les types de variable
Qualitative nominale
ordinale
Quantitative discrète
continue
b. Les types d’erreurs dans un datastet
Lorsqu'une valeur au sein d'un jeu de données n'est pas renseignée,
on parle de valeur manquante : / pour un jeu mydata ;
print(mydata.isnull().sum())
Une valeur peut également être incohérente par rapport au format ou
par rapport à la façon dont la variable a été construite. On parle alors
d'erreur lexicale, d'erreur de formatage ou encore d'erreur
d'irrégularité.
Certaines valeurs peuvent apparaître en double dans notre jeu de
données : ce sont des doublons ;
mydata.loc[mydata['email'].duplicated(keep=False),:].
Une valeur extrême, ou outlier, est une valeur bien trop importante ou
bien trop faible par rapport à l'ensemble des valeurs d'une variable.
o Elle peut être atypique
o Elle peut être aberrante
mydata.describe()
3. Formes de représentation
a. Les courbes
b. Les diagrammes à barre (diagramme en bâton ; diagramme en tuyaux d’orgue)
c. Les diagrammes circulaires (ou camembert ou en secteur – pie chart
en anglais)
Attention :
Ces deux diagrammes matérialisent les mêmes informations : mais le diagramme à
barre présente de manière plus palpable les différences.
d. Les histogrammes
e. Nuage de point
f. Les diagrammes boîtes à moustaches
g. Carte
h. Le choix d’une représentation
Courbes Diagrammes à Circulaire ou Histogramme Nuage Diagramme boite à Carte
barre camemberts ou (une variante est de point moustache
secteur l’histogramme à
densité)
Présentez une
évolution
x x
(numérique)
dans le temps :
(bivarié)
*Comparez
différents
x x x
groupes d’une
variable
quantitative par
rapport à une
variable
qualitative
*Comparaison
qualitative et
quantitative
(bivarié)
Représentez
une distribution
X (variables X (variables x(variables x (pour les
qualitatives) qualitatives) quantitatives) distributions
(univarié)
quantitatives)
Représentez la
relation entre
x
2 variables
numériques
(bivarié)
Représenter
des données
x x x
géographiques
(bivarié)
Représentation d’une distribution empirique (univarié)
Diagrammes Circulaire Histogramme Diagramme
à barre ou (une variante boite à
camemberts est moustache
l’histogramme
à densité)
Variable x(diagramme x
qualitative en tuyaux
d’orgue)
Variable X
quantitative (diagramme
discrète en bâton)
Variable x x
quantitative
continue
Nombre
optimal de
classe
k=[1+log2(n)]
NB : On peut passer : d’une relation univariée à une relation bivariée, d’une
relation bivariée à une relation multivariée, et ainsi de suite. Mais le
diagramme ne doit pas être complexe à exploité. Parfois gardé la limite au tri-
varié. Ce principe n’est pas encouragé pour les distributions.
4. Tracer des Courbes avec Python
Importer au préalable la librairie avec par exemple l’instruction :
import matplotlib.pyplot as plt
a) Le tracer des courbes :
Pour tracer la courbe, il faut saisir l’instruction suivante :
plt.plot(donnéesX, donnéesY)
On peut ajouter à plt : un titre, un label pour l’axe X, un label pour l’axe Y, des
couleurs. On peut également augmenter la taille du graphique.
Cela demande en général agréger les données (grâce à groupeby) avec
l’instruction plot de matplotlib. Mais avec la librairie seaborn qui est une libraire
surcouche à matplotlib, l’agrégation est automatique.
Parfois sur jupyter notebook, il faut commencer par installer seaborn avec
l’instruction : %pip install seaborn
Instruction d’importation exemple :
import seaborn as sns
Instruction pour tracer la courbe avec seaborn
sns.lineplot(data=LeDataSet, x=dataX, y=dataY, hue=dataZ,
estimator=sum/np.mean/…)
hue=dataZ pour une analyse trivarié
estimator pour le type d’agrégation de donné
b) Tracez des diagrammes à barre
Après avoir agréger les données avec matplotlib
plt.bar(donnéesX, donnéesY)
Avec Seaborn :
sns.barplot(data=LeDataSet, x=dataX, y=dataY, hue=dataZ,
estimator=sum/np.mean/…)
Seaborn permet de faire facilement les agrégations et ajouter une troisième
variable pour une analyse tri-variée. Pour la même chose avec matplotlib, on
peut se servir de la méthode pivot_table pour obtenir un tableau qui est par
exemple comme ci-dessous :
Catégorie Monsieur Madame
Portail Montant du paiement Montant du paiement
Portillon Montant du paiement Montant du paiement
…
Cette table est une table pivot et avec une fonction plot des dataframes sur
python, on peut afficher le diagramme à barre qui affiche les Montants en
fonction des catégories de façon tri varié. Si le dataframe correspondant au
tableau ci-dessous est « data ». L’affichage à les instructions :
data.plot(kind=’bar’, color=[‘blue’, ‘red’], stacked=True)
plt.xlabel(‘Categorie’)
plt.ylabel(‘Montant du paiement’)
L’instruction stacked=True spécifie si on veut empiler les barres. Ce tableau
produit de cette façon avec juste deux colonne, peut permettre d’avoir une
distribution. En utilisant ce pivot sur des valeurs quantitatives on obtient une
analyse tri varié qui peut nous permettre d’afficher une figure intégrant une
analyse tri varié. La disposition du tableau de cette manière sur excel permet
aussi d’avoir une analyse tri varié.
Pour représenter une distribution :
data[donnéesX].value_counts(normalize=True).plot(kind='bar')
plt.show()
normalize=True permet d’avoir en fréquences
Notons que la distribution avec les diagrammes à barre est pour les variable
qualitative ou les variables quantitatives discrète.
c) Les diagrammes circulaires (généralement pas très intéressant en tri varié)
Cela nécessite forcément agréger les données.
plt.pie(x= donnéesX, labels= donnéesY)
- Les données X sont numériques
- Les données Y sont non numériques
On ne doit pas avoir plusieurs labels pour réaliser un diagramme circulaire. Car,
le camembert sera touffu. Un diagramme circulaire peut représenter tout ce que
représente un diagramme à barre. Mais les labels doivent être réduit pour que le
cercle ne soit pas touffu et illisible.
d) Les Histogrammes
L’histogramme est particulièrement utile lorsqu’on souhaite avoir une idée de la
distribution d’une variable quantitative continue.
plt.hist(ColonneDataSet)
hist(density=True,bins=20)
- Density est un paramètre pour indiquer si on veut un histogramme à densité
- bins est pour spécifié le nombre de classe k. en appliquant la règle de Sturges (1926) :
k =[1+log2(n)]
- Utiliser kdeplot pour un graphique à densité
Le Skewness
Pour calcule le skewness sous python : data[ColonneDataSet].skew()
Pour calcule le Kurtosis sous python : data[ColonneDataSet].kurtosis()
e) Nuage de point
Pour représenter un nuage de points, il faut saisir l’instruction suivante :
plt.scatter(donnéesX, donnéesY)
Avec seaborn on peut avoir une analyse trivariée :
sns.scatterplot(data=LeDataSet, x=dataX, y=dataY, hue=dataZ)
Pour faire une analyse tri variée en utilisant matplotlib ; il suffit de faire
plusieurs groupements de data. Puis, les afficher sur un même graphique avec
différente couleur comme dans l’exemple suivant :
Changer la couleur des points
Pour modifier la couleur il y a l'option c dans la fonction scatter,
exemple
import matplotlib.pyplot as plt
x = [1,2,3,4]
y = [4,1,3,6]
size = [100,500,100,500]
plt.scatter(x, y, s=size, c='coral')
x = [5,6,7,8]
y = [1,3,5,2]
size = [100,500,100,500]
plt.scatter(x, y, s=size, c='lightblue')
plt.title('Nuage de points avec Matplotlib')
plt.xlabel('x')
plt.ylabel('y')
plt.savefig('ScatterPlot_03.png')
plt.show()
Comme vous le voyez on peut aussi changer la taille des points. Cela est fait
dans le code ci-précédent.
f) Boite à moustache
Pour afficher une boite à moustache avec matplotlib python :
plt.boxplot(data). Data étant une donnée quantitative.
On peut mener une analyse bi variée sur les boites à moustache en scindant les
données conformément aux groupes puis utiliser des codes python comme dans
l’exemple ci-dessous :
- Analyse bi variée des boites à moustaches avec MatPlotLib
# import the required library
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
% matplotlib inline
# load the dataset
df = pd.read_csv("tips.csv")
# display 5 rows of dataset
df.head()
Boxplot of days with respect total_bill.
df.boxplot(by ='day', column =['total_bill'], grid = False)
Boxplot of size with respect tip.
df.boxplot(by ='size', column =['tip'], grid = False)
- Analyse bi variée sur une boite à moustache en utilisant seaborn :
ci-dessous un exemple
# load the dataset
tips = sns.load_dataset('tips')
tips.head()
Boxplot of days with respect total_bill.
# Draw a vertical boxplot grouped
# by a categorical variable:
sns.set_style("whitegrid")
sns.boxplot(x = 'day', y = 'total_bill', data = tips)
Devoir :
A partir des données de votre choix produisez un Dashboard sous python :
Dans la figure ci-dessus :
plt.subplots permet de structurer le Dashboard en une matrice 3 lignes et 3
colonnes soit 9 cases.
L’instruction fig.set_size_inches permet d’agrandir le Dashboard
De ce fait, si on veut afficher un graphique dans une case, on peut se servir par
exemple de la commande suivante :
Cette instruction crée un histogramme pour le dataframe data1 à la case ayant
pour coordonnées x=0 et y=0 ; soit la toute première case de la gauche vers la
droite.
Créer autant de case pour les graphiques correspondant aux besoins suivants :
Présenter une évolution (numérique) dans le temps :
Comparer une variable qualitative et une variable quantitative
Représentez une distribution d’une donnée qualitative
Représentez une distribution d’une donnée quantitative
Représentez la relation entre 2 variables numériques
Représenter des données géographiques
Notons que plusieurs graphiques peuvent être associées à chaque point ci-
dessus. Pour chaque graphique, lorsqu’il y a possibilité ajouté une variable en
plus pour faire soit du bi varié ou du tri varié, mais, en restant professionnel.