Analyse de données sous Sweetviz

L’analyse exploratoire des données (EDA) est une première étape essentielle dans la plupart des projets de science des données et consiste souvent à suivre les mêmes étapes pour caractériser un ensemble de données (par exemple, trouver les types de données, les informations manquantes, la distribution des valeurs, les corrélations, etc.). L’une des dernières est une nouvelle bibliothèque Python open-source appelée Sweetviz.

Sweetviz

Après l’installation de Sweetviz (en utilisant pip install sweetviz), chargez simplement les dataframes pandas comme vous le feriez normalement, puis appelez analyze(), compare() ou compare_intra().

import sweetviz
import pandas as pd
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")

Nous avons maintenant 2 dataframes (train et test), et nous aimerions analyser la valeur cible « Survived ». Je tiens à souligner que dans ce cas, nous connaissons à l’avance le nom de la colonne cible, mais il est toujours facultatif de spécifier une colonne cible. Nous pouvons générer un rapport avec cette ligne de code :

my_report = sweetviz.compare([train, "Train"], [test, "Test"], "Survived")

L’exécution de cette commande effectuera l’analyse et créera l’objet de rapport. Pour obtenir le résultat, utilisez simplement la commande show_html() :

my_report.show_html("Report.html") # Not providing a filename will default to SWEETVIZ_REPORT.html

Résumé global

Le résumé nous montre les caractéristiques des deux dataframes côte à côte. Nous pouvons immédiatement identifier que l’ensemble de test est à peu près la moitié de la taille de l’ensemble d’apprentissage, mais qu’il contient les mêmes fonctionnalités. Cette légende en bas nous montre que l’ensemble d’apprentissage contient la variable cible « Survived », mais que l’ensemble de test ne le fait pas.

Notez que Sweetviz fera une meilleure estimation pour déterminer le type de données de chaque colonne, entre numérique, catégorie/booléen et texte. 

Analyse de données sous Sweetviz sweetviz

Associations

Ce graphique est un composite des éléments visuels de Drazen Zaric : Better Heatmaps and Correlation Matrix Plots in Python et des concepts de Shaked Zychlinski : The Search for Categorical Correlation.

Fondamentalement, en plus de montrer les corrélations numériques traditionnelles, il unifie dans un seul graphique à la fois la corrélation numérique mais aussi le coefficient d’incertitude (pour catégoriel-catégoriel) et le rapport de corrélation (pour catégoriel-numérique). Les carrés représentent les variables liées aux caractéristiques catégorielles et les cercles représentent les corrélations numériques-numériques. Notez que la diagonale triviale est laissée vide, pour plus de clarté.

Les associations catégorielles-catégorielles (fournies par le coefficient d’incertitude) sont ASSYMETRIQUES, ce qui signifie que chaque ligne représente à quel point le titre de la ligne (à gauche) donne des informations sur chaque colonne. Par exemple, « Sex », « Pclass » et « Fare » sont les éléments qui donnent le plus d’informations sur « Survived ». Pour le jeu de données Titanic, cette information est plutôt symétrique mais ce n’est pas toujours le cas.

Enfin, il convient de noter ces méthodes de corrélation/association
ne doivent pas être pris comme un évangile car ils font des hypothèses sur la distribution sous-jacente des données et des relations. Cependant, ils peuvent être un point de départ très utile.

Analyse de données sous Sweetviz sweetviz

Sélection d'une variable

Lorsqu’une variable cible est spécifiée, elle apparaîtra en premier, dans une boîte noire spéciale. Seules les entités numériques et booléennes peuvent être des cibles actuellement.

Nous pouvons déduire de ce résumé que « Survived » n’a pas de données manquantes dans l’ensemble d’apprentissage (891, 100%), qu’il existe 2 valeurs possibles distinctes (représentant moins de 1% de toutes les valeurs), et à partir du graphique, il peut On estime qu’environ 60 % n’ont pas survécu.

Données qualitatives et booléennes

Lorsque vous déplacez la souris pour survoler l’une des variables, une zone à droite affichera les détails. Le contenu des détails dépend du type de variable analysée. Dans le cas d’une variable catégorielle (ou booléenne), comme c’est le cas avec la cible, l’analyse est la suivante :

Analyse de données sous Sweetviz sweetviz

Ici, nous pouvons voir les statistiques exactes pour chaque classe, où 62% n’ont pas survécu et 38% ont survécu. Vous obtenez également le détail des associations pour chacune des autres fonctionnalités.

Données quantitatives

Les données numériques montrent plus d’informations sur son résumé. Ici, nous pouvons voir que dans ce cas, environ 20 % des données manquent (21 % dans les données de test, ce qui est très cohérent).

Analyse de données sous Sweetviz sweetviz

Notez que la valeur cible (« Survived » dans ce cas) est tracée sous la forme d’une ligne, juste au-dessus du graphique de distribution. Cela permet une analyse instantanée de la distribution cible par rapport aux autres variables.

Fait intéressant, nous pouvons voir sur le graphique de droite que le taux de survie est assez constant à tous les âges, sauf pour les plus jeunes qui ont un taux de survie plus élevé. Il semblerait que «les femmes et les enfants d’abord» ne soient pas que des paroles.

Détails d'une variable quantitative

Comme pour le type de données catégorielles, le type de données numériques affiche des informations supplémentaires dans sa zone de détail. Il convient de noter ici les boutons en haut du graphique.

Ces boutons modifient le nombre de « bacs » affichés dans le graphique. Vous pouvez sélectionner ce qui suit : Auto, 5, 15, 30.

Pour accéder à ces boutons, vous devez « verrouiller en place » la fonctionnalité actuelle en cliquant dessus. La fonction a alors un CONTOUR ROUGE pour montrer qu’elle est verrouillée en place et vous pouvez accéder à la zone de détail.

Analyse de données sous Sweetviz sweetviz

Données textuelles

Pour l’instant, tout ce que le système ne considère pas comme numérique ou catégorique sera considéré comme du « texte ». Les fonctionnalités textuelles n’affichent actuellement que le nombre (pourcentage) sous forme de statistiques.

Analyse de données sous Sweetviz sweetviz

Comparaison de sous-populations

Même si vous ne regardez qu’un seul ensemble de données, il peut être très utile d’étudier les caractéristiques de différentes sous-populations au sein de cet ensemble de données.

Pour cela, Sweetviz propose la fonction compare_intra(). Pour l’utiliser, vous fournissez un test booléen qui divise la population (ici, nous essayons train[« Sex »] == ‘male’, pour avoir une idée des différentes populations de genre), et donnez un nom à chaque sous-population. Par example:

my_report = sweetviz.compare_intra(train, train["Sex"] == 'male', ["Male", "Female"], 'Survived')my_report.show_html() # Not providing a filename will default to SWEETVIZ_REPORT.html

Ce qui donne l’analyse suivante :

Analyse de données sous Sweetviz sweetviz

Notez que la valeur cible (« Survived » dans ce cas) est maintenant tracée sous forme de lignes séparées, une pour chaque ensemble de données comparées (par exemple, homme en bleu, femme en orange).

Exemple sur le jeu de données du Titanic

PassengerId

Analyse de données sous Sweetviz sweetviz
  • La distribution des pièces d’identité et de la capacité de survie est uniforme et ordonnée.

Sex

Analyse de données sous Sweetviz sweetviz
  • Deux fois plus d’hommes que de femmes
  • Mêmes distributions dans les jeux d’entrainement et de test

Age

Analyse de données sous Sweetviz sweetviz
  • 20 % de données manquantes, données manquantes cohérentes et répartition entre Train et Test

Name

Analyse de données sous Sweetviz sweetviz
  • Pas de données manquantes

Pclass

Analyse de données sous Sweetviz sweetviz
  • La capacité de survie suit de près la classe (la première classe est la plus susceptible de survivre, la troisième classe la moins susceptible)

SibSp

Analyse de données sous Sweetviz sweetviz
  • Il semble y avoir un pic de survie à 1 et dans une certaine mesure à 2, mais (en regardant le volet de détails non illustré ici), il y a une forte baisse à 3 et plus. Les familles nombreuses ne pouvaient pas le faire ou étaient peut-être plus pauvres ?

Parch

Analyse de données sous Sweetviz sweetviz
  • Distribution similaire

Ticket

  • ~80 % de valeurs distinctes, soit environ 1 ticket partagé sur 5 en moyenne

Fare

Analyse de données sous Sweetviz sweetviz
  • Comme prévu, et comme pour Pclass, les tarifs les plus élevés ont mieux survécu (bien que la taille de l’échantillon devienne assez mince à des niveaux plus élevés)

Cabin

Analyse de données sous Sweetviz sweetviz
  • 78% de données manquantes

Embarked

Analyse de données sous Sweetviz sweetviz
  • 3 valeurs distinctes (S, C, Q)

Analyse générale

  • Dans l’ensemble, la plupart des données sont présentes et semblent cohérentes et logiques ; pas de valeurs aberrantes majeures ou d’énormes surprises

Test versus Training data

Le test contient environ 50 % de lignes en moins.

Train et Test sont très proches dans la distribution des données manquantes.

Les valeurs des données d’entraînement et de test sont très cohérentes dans tous les domaines

Association/correlation analysis

  • Le sexe, le tarif et la classe donnent le plus d’informations sur les survivants

Missing data

  • Il n’y a pas de données manquantes significatives, sauf pour l’âge (~ 20 %) et la cabine (~ 77 %)