Explorez vos données avec pandas_profiling

Dans un projet de Data Science la data prep prend beaucoup de temps par rapport à l’ensemble du projet. Et soyons honnête ce n’est pas forcément la partie la plus intéressante. Mais avant même d’en arriver à cette étape de préparation des données il faut explorer le Data Set pour commencer à appréhender les données que nous allons utiliser. Et cette partie là aussi peut être fastidieuse.

Dans cet article je vous parle de pandas_profiling 🐼 , une librairie Python que j’adore et qui va vous faire gagner un temps fou. Oui oui une librairie Python! Je n’avais pas encore fait d’article Python, seulement quelques liens pour apprendre à coder en Python mais Python prend de plus en plus de place dans mon travail de Data Scientist, j’essayerai donc de vous proposer des articles sur R et Python (pas de jaloux).

Comme je vous le disais j’ADORE pandas_profiling 🐼 , depuis que je l’ai testé, je l’utilise dès que je dois explorer un nouveau dataset. Cette librairie permet d’avoir un résumé d’une base de données contenant presque toutes les informations que vous aviez l’habitude de coder en plusieurs dizaines de lignes.

Je vous propose de découvrir ce que ça donne avec un exemple. Il s’agit de données d’un opérateur télécom disponibles sur Kaggle ici. On y trouve une colonne churn qui indique si le client a résilié ou non son contrat ainsi que des variables qui caractérisent son abonnement, sa consommation,…

Commençons par charger la librairie

import pandas_profiling

Puis nous chargeons les données

#Chargement des données
df = pd.read_csv("C:/Users/M/Documents/Telco_Customer_Churn.csv")

Et tout simplement nous demandons la création du rapport de pandas_profiling

pandas_profiling.ProfileReport(df)

Le rapport qui est généré se compose de plusieurs parties

Overview

Tout d’abord nous avons une vue d’ensemble de notre Dataset. On y retrouve des infos comme le nombre de lignes / colonnes, le taux de valeurs manquantes, le nombre de variables pour chaque type (numeric, categorical, …) On y trouve également une partie Warnings avec un certain nombre d’alertes. Par exemple dans notre cas, pandas_profiling nous informe que la variable TotalCharges a une cardinalité élevée (beaucoup de valeurs distinctes). Il peut aussi créer des alertes lorsque le nombre de valeurs manquantes est trop élevé ou que des variables sont trop corrélées entre elles.

pandas_profiling liste des variables du dataset

Variables

Une deuxième partie permet de regarder plus en détail les variables qui composent le Dataset.

Pour les variables catégorielles comme la variable churn dans notre exemple, nous obtenons :

  • Le nombre de valeurs distinctes (2 dans notre cas : yes et no)
  • Le nombre de valeurs uniques, c’est à dire qui n’apparaissent qu’une seule fois dans le dataset (aucune dans notre cas)
  • Le taux et le nombre de valeurs manquantes (aucunes dans notre cas)

pandas_profiling donne également la répartition des 2 modalités de notre variable churn. Pratique non?

variables dans pandas_prfiling python

Pour les variables numériques pandas_profiling s’adapte et nous propose :

  • Le nombre de valeurs distincts
  • Le pourcentage de valeurs uniques
  • Le taux et le nombre de valeurs manquantes
  • Le taux et le nombre de valeurs infinies
  • Des chiffres clés : moyenne, minimum, maximum et le pourcentage de valeurs égales à 0
  • Un histogramme pour voir la répartition des valeurs
Variables numériques avec python_profiling

Vous voulez en savoir encore plus? Un petit clic sur ‘Toggle details’ vous donnera accès à d’autres informations très utiles comme d’autres statistiques (variance, coefficient de variation, médiane, …), les valeurs les plus fréquentes ou encore les valeurs extrêmes (en fait, juste les valeurs les plus élevée, il n’y a pas vraiment la notion de valeur extrême) et leur fréquence dans le dataset.

Sample

Enfin dans cette dernière partie on retrouve simplement un extrait de quelques lignes du dataset.

pandas_profiling affichage d'un samplepython

Pour finir je vous propose d’enregistrer ce rapport au format html

pfr = pandas_profiling.ProfileReport(df)
pfr.to_file("C:/Users/M/Documents/example.html")

Pour conclure je vous dirai que pandas_profiling est très pratique, qu’elle vous fera gagner du temps. Mais c’est bien sûr toujours à vous, en tant que Data Scientist de faire l’exploration, de vous poser les bonnes questions et surtout de mettre en place les bonnes étapes de Data Prep par la suite.

Personnellement j’ai mis cette librairie dans ma liste de chouchou. Merci pandas_profiling 🐼

Laisser un commentaire

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