dataprep.eda : un nouveau venu dans l'analyse de données

Un nouvel arrivé dans le monde du profiling

En 2016 Pandas Profiling faisait son apparition, et avec cette librairie s’ouvrait le monde de la préparation de données dans l’univers Python (phase oh combien indispensable d’un projet de Data science). J’y avais d’ailleurs consacré un article su le sujet ici.

2020 sera sans doute l’année de « dataprep « et plus particulièrement de dataprep.eda ! en effet le projet dataprep se décompose en plusieurs sous-projet (dont celui d’eda : Exploratory Data Analysis, et dataprep.data_connector) … mais d’autres sont en cours de réalisation et au vu du nom de la librairie on peut facilement s’imaginer ce qu’ils vont couvrir.

Bref, voyons ce que cette librairie a dans le ventre …

Installation de dataprep.eda

Comme toute librairie Python tout commence par l’installation et le déploiement. Pour cela rien n’est plus efficace que l’utilisation de la commande pip :

pip install dataprep

Pour plus d’informations sur la librairie, allez sur https://sfu-db.github.io/dataprep/ vous y trouverez (en anglais) aussi des documents utilisateurs, etc.

Si vous voulez utiliser conda ou encore mamba tapez les commandes suivantes :

conda install -c conda-forge mamba
ou
mamba install -c conda-forge -c sfu-db dataprep

La librairie dataprep est vraiment très simple et dispose de 4 grandes fonctions que nous allons voir par la suite :

Analyse de distribution

Comme souvent, nous allons partir des données du titanic pour regarder en une seule ligne l’allure de la distribution de ce jeu de données :

import pandas as pd
from dataprep.eda import *
from pandas_profiling import ProfileReport
data = pd.read_csv("../datasources/titanic/train.csv")
plot(data)

Un simple appel de la fonction plot() sur un daraframe Pandas suffit à faire afficher les graphes suivants :

Dans cet article on va passer au en revue le petit nouveau du profiling Python : datapre.eda

Chaque colonne présente un graphe de distribution (a barre bien sur). Un clic sur l’entête « Show Stats Info » permet d’avoir des informations globales (Nombre de données manquantes, doublons, etc.).

Vous ne voulez pas forcément avoir toutes les colonnes ? pas de problème il suffit juste de préciser la/les colonnes voulues à la fonction plot() comme suit.

Détails sur une seule colonne

plot(data, "Age")

Dans cette visualisation de détail vous aurez même accès a des viz supplémentaires pour vous aider dans votre analyse. Un certain nombre d’onglets (Stats, Histogram, etc.) vous permet de visualiser en un clin d’oeil -presque- toutes les informations de la colonne voulue.

Confronter 2 colonnes

Il est aussi souvent pratique de regarder deux colonnes entres elles, une fois de plus la fonction plot() nous permet de le faire en toute simplicité. Plus bas nous allons afficher dans la même viz les données d’age et de prix du billet :

plot(data, "Age", "Fare")

Une fois de plus plusieurs onglets sont proposés afin de présenter les données soit par exemple sous un graphe de points (scatter plot) soit des boites à moustaches (box plot) soit sous un graphe de point hexagonal (hexagonal binning plot):

Analyse des valeurs manquantes

Un important aspect – particulièrement pour les projets de Machine learning – est l’analyse des données manquantes. dataprep.eda propose la fonction plot_correlation()

plot_missing(data)

Comme précédemment, plusieurs onglets sont proposés pour présenter différentes manière de voir ces informations (carte de chaleur, barres, etc.). Notez que si vous avez des données catégorielles, les graphes seront différents … essayez-le !

Analyse de corrélation

Un autre aspect très intéressant est l’analyse de corrélation qui permet de découvrir le degré de lien entre les colonnes du jeu de données. Nous avons vu cette notion dans un précédent article aussi je ne reviendrais pas sur les différentes méthodes de calcul.

Avec datapre.eda, on ne se pose pas de question et on utilise la fonction plot_correlation()

plot_correlation(data)

Création de rapport avec create_report()

La génération de rapport se lance via la commande

ProfileReport(data).to_widgets()

Conclusion

Cette librairie comme je le disais en introduction est récente (2020) et déjà très prometteuse. Après quelques essais on peut d’ores et déjà dire que par rapport à Pandas Profiling on trouves ces avantages :

  • Clairement une meilleure conception des APIs
  • D’après quelques benchs – et surtout via les promessess des concepteurs – cette librairie est jusqu’à 100 fois plus rapide ! à vérifier quand même.
  • Visualisation intelligente et adaptive (certes beaucoup moins statique)
  • Permet la gestion de données beaucoup plus volumineuses (ce qui était clairement une limite de Pandas Profiling).
Partager cet article

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.