Analysez vos données sans effort avec Pandas-profiling

Décidément le monde des Pandas ne cesse de s’étoffer ! Avec la nouvelle librairie pandas_profiling l’analyse de données automatique (et pour le coup assez complet) est à la portée de tous. Simple et rapide à mettre en œuvre je ne pouvais pas passer à coté de ce petit bijoux du profiling.

Premier profiling

Commençons pas installer la librairie aec Python/pip :

$ pip install pandas_profiling

Comme on pourrait s’en douter cette librairie utiliser des DataFrame Pandas. Nous allons donc repartir des données du titanic pour regarder ce que celà donne.

from pandas_profiling import ProfileReport
import pandas as pd
train = pd.read_csv('../datasources/titanic/train.csv')

Générons ensuite le rapport de profiling. 2 lignes de code suffisent :

prof = ProfileReport(train)
prof.to_file(output_file='rapport.html')

Un fichier rapport.html est alors généré. Ce rapport complet présente toutes les informations utiles pour commencer à travailler les données.

Description des éléments analysés

Voici à quoi ressemble la page html générée :

Nous y retrouvons, organisé de manière séquentielle (ou via le menu du haut) :

  • Une synthèse permettant en un coup d’oeil de trouver les grand soucis à gérer pour un data scientist : données manquantes, cardinalité, etc.
  • Des informations de bases comme: Le nombre de colonnes/lignes, les données manquantes ou en doublon, la mémoire occupée, etc.

  • Par colonne:
    • Des statistiques quantiles: valeur minimale, Q1, médiane, Q3, maximum, plage, plage interquartile
    • Des Statistiques descriptives telles que la moyenne, médiane, écart-type, somme, écart absolu médian, coefficient de variation, kurtosis, asymétrie
    • Inférence de type : Les types des données réelles constatés dans le jeu de données (chaînes catégorielles, numériques, etc.)
    • Les Valeurs les plus fréquentes
    • Distribution des valeurs (Histogrammes)
  • Une analyse détaillée des corrélations mettant en évidence des variables hautement corrélées, matrices Spearman, Pearson et Kendall :
  • Matrice des valeurs manquantes, comptage, carte thermique et dendrogramme des valeurs manquantes
  • L’analyse de texte vous informe sur les catégories (majuscules, espace), les scripts (latin, cyrillique) et les blocs (ASCII) de données texte.

Allons un peu plus loin avec la librairie

Pour ceux qui utilisent Jupyter (comme moi) au lieu de générer un fchier html séparé on peut afficher le rapport dans un notebook :

profile = ProfileReport(train, title='Analyse du fichier Titanic', html={'style':{'full_width':True}})
profile.to_notebook_iframe()

Et si on voulait traiter les données résultat dans un script ou un autre programme, on peut aussi récupérer le résultat des analyses au format JSON:

profile.to_json()

Pour sauvegarder manuellement :

profile.to_file(output_file="titanic.html")

Et pour les gros fichiers de données, l’analyse pourrait être vraiment très longue. Vous pouvez alors limiter l’analyse via l’option minimal. Certains traitements lourd comme les correlations ne seront pas exécutés:

profile = ProfileReport(large_dataset, minimal=True)

Conclusion

Vous savez maintenant comment faire un profiling avancé sur un jeu de données sans aucun effort (bon ok juste 2 lignes de Python). Attention car comme je le précisais juste avant les traitements sous-jacents à ce profiling peuvent être très lourd … gare au gros Dataframe donc sans quoi il vous faudra vous armer de patiente.

Retrouver les éléments de cet article dans Github.

Partager cet article

One Reply to “Analysez vos données sans effort avec Pandas-profiling”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.