Visualisations pandas

Explorer et visualiser les données d'une dataframe python

Utilisation des modules pandas et seaborn en langage python


L'essentiel de cette page

Explorer les données est une étape préliminair essentielle à toute analyse de données. Les fonctionnalités plotting du module pandas permettent rapidement d'obtenir un maximum de graphiques pour s'approprier un jeu de données.

Etape préliminaire : ouvrir un jeu de données pour comprendre les exemples ci-dessous

import easygui # cf. aide, comment ouvrir une dataframe
import pandas as pd
mydata = pd.read_excel(easygui.fileopenbox()) # On peut remplacer easygui.fileopenbox() par le nom du fichier.
# Dans les exemples ci-dessous, nous allons ouvrir le tableau suivant : analyses sanguines.
import matplotlib.pyplot as plt

1- Visualiser l'ensemble des données d'une data.frame sous forme de heatmap

# Etape 1 - Centrer les données contenues dans une dataframe mydata
temp = mydata.sub(mydata.mean()) # soustraire la moyenne
# Etape 2 - Réduire les données
temp = temp.div(temp.std()) # diviser par l'écart-type
# Etape 3 - (optionnel) Trier éventuellement les données en fonction d'une colonne
temp = temp.sort_values(by = 'VGM')
# Etape 4 - (optionnel) Transposer les données pour basculer x et y
temp = temp.T
print(temp)
# Etape 5 - Tracer la heatmap()
import seaborn as sns; sns.set()
sns.heatmap(temp,cmap="viridis") 
plt.show()
heatmap de toutes les données d'un tableaucouleur éditée via les palettes cmap#https://matplotlib.org/examples/color/colormaps_reference.html pour la couleur

2- Afficher une matrice de graphiques pour mettre en relation toutes les variables

Visualiser l'ensemble des scatter-plot possibles d'un jeu de données avec la fonction scatter_matrix :

from pandas.plotting import scatter_matrix
scatter_matrix(mydata.iloc[:,1:7], alpha = 1, figsize = (6, 6), diagonal = 'kde',color="red")
plt.show() # On voit que les variables discrètes sont éliminées

Voir comment sélectionner les colonnes à croiser dans les scatter_matrix() dans la rubrique régressions linéaires

3- Utiliser la fonction plot du module pandas.plotting pour réaliser de nombreux graphiques d'exploration d'une dataframe

On part du principe que pandas est importé ainsi qu'une dataframe ouverte : mydata

  • Une courbe pour chaque variable
# On part du principe que pandas est importé ainsi qu'une dataframe ouverte : mydata
mydata.plot()
plt.show()
  • Une aire pour chaque variable
mydata.plot(kind="area") ; plt.show()
  • Un histogramme pour chaque variable
    • Superposition des histogrammes
mydata.plot(kind='hist',alpha=0.5,bins=20) ; plt.show()
    • Un histogramme séparément
mydata.hist(bins=20,color="red") ; plt.show()
  • Une boîte à moustaches pour chaque variable

Faire un tel affichage est simple mais pause un problème d'échelle car chaque variable aura la même échelle y que l'autre.

Remarque : on peut mettre plusieurs variables et proposer plusieurs catégories mais cela sera vite limitée à cause des problèmes d'échelle.

mydata.plot(kind='box',subplots=True, layout=(2,3)) ; plt.show() # Exemple 1
mydata.boxplot(column=["Hématies"], by=["Santé"]) # Exemple 2 - Afficher une variable en fonction d'une variable de catégories.
  • Des diagrammes en bâtons ou diagrammes en barres
mydata.plot(kind="bar")
  • Un plot pour les 2 variables de son choix
mydata.plot(kind="scatter", x="VGM" , y="Hématies",
               c='Santé',s=100,cmap="viridis")
plt.show()

Dans cet exemple, on donne une variable (numérique) de catégories pour définir la coloration.

Attention : cette variable ne peut être discrète, sinon, il faudra songer à en créer une avec apply() (suivre le lien).

Graphique kde plot, lignes de densité, kernel density

mydata.iloc[3:,1:7].plot.kde(subplots=True,figsize=(12,9)) ; plt.show()

Remarque : cette commande sature si le tableaux présente trop de variables.

Pour nettoyer les données manquantes NA avant affichage

La paramètre bw_method=0.1 permet de changer la fenêtre de lissage.


Cela permet de comparer plusieurs variable : le problème est que si c'est variable n'ont pas la même échelle/amplitude, on ne peut pas voir bien la courbe.

Ex : hématies est écrasé par l'échelle de plaquettes