Tout d'abord, pour commencer avec un nouvel ensemble de données, vous devez le comprendre. Pour ce faire, vous devez, par exemple, connaître les plages de valeurs acceptées par les variables, leurs types et également connaître le nombre de valeurs manquantes.
La bibliothèque pandas nous fournit de nombreux outils utiles pour effectuer l'analyse exploratoire des données (EDA). Mais avant de les utiliser, vous devez généralement commencer par des fonctions plus générales, telles que df.describe (). Certes, il convient de noter que les possibilités offertes par ces fonctions sont limitées, et les étapes initiales de travail avec n'importe quel ensemble de données pendant l'EDA sont très souvent très similaires les unes aux autres.

L'auteur du matériel que nous publions aujourd'hui dit qu'il n'est pas fan des actions répétées. En conséquence, à la recherche d'outils pour effectuer rapidement et efficacement l'analyse exploratoire des données, il a trouvé la bibliothèque de
profilage pandas . Les résultats de son travail ne sont pas exprimés sous la forme de certains indicateurs individuels, mais sous la forme d'un rapport HTML assez détaillé contenant la plupart des informations sur les données analysées que vous devrez peut-être connaître avant de commencer à travailler plus étroitement avec eux.
Ici, nous examinerons les caractéristiques de l'utilisation de la bibliothèque de profilage pandas en utilisant l'exemple de l'ensemble de données Titanic.
Analyse des données d'exploration des pandas
J'ai décidé d'expérimenter le profilage pandas sur l'ensemble de données Titanic en raison du fait qu'il contient des données de différents types et en raison des valeurs manquantes. Je pense que la bibliothèque de profilage pandas est particulièrement intéressante dans les cas où les données n'ont pas encore été effacées et nécessitent un traitement supplémentaire, en fonction de leurs caractéristiques. Pour réussir un tel traitement, vous devez savoir par où commencer et quoi rechercher. C'est là que les fonctionnalités de profilage pandas sont utiles.
Pour commencer, nous importons les données et utilisons des pandas pour obtenir des indicateurs de statistiques descriptives:
# import pandas as pd import pandas_profiling import numpy as np # df = pd.read_csv('/Users/lukas/Downloads/titanic/train.csv') # df.describe()
Après avoir exécuté ce morceau de code, vous obtenez ce qui est illustré dans la figure suivante.
Statistiques statistiques descriptives à l'aide d'outils pandas standardBien qu'il contienne beaucoup d'informations utiles, il n'y a pas tout ce qui serait intéressant d'en savoir plus sur les données étudiées. Par exemple, nous pouvons supposer que dans le
DataFrame
données, dans la structure
DataFrame
, il y a 891
DataFrame
. Si vous devez vérifier cela, vous aurez besoin d'une autre ligne de code qui détermine la taille du cadre. Bien que ces calculs ne soient pas particulièrement gourmands en ressources, leur répétition constante entraînera nécessairement une perte de temps, qui est probablement mieux dépensée pour le nettoyage des données.
Analyse exploratoire des données à l'aide du profilage pandas
Faites de même avec le profilage pandas:
pandas_profiling.ProfileReport(df)
La mise en œuvre de la ligne de code ci-dessus vous permettra de générer un rapport avec des indicateurs d'analyse exploratoire des données. Le code ci-dessus mènera à la conclusion des informations de données trouvées, mais cela peut être fait de sorte que le résultat soit un fichier HTML, qui, par exemple, peut être montré à quelqu'un.
La première partie du rapport contiendra la section Aperçu, qui fournit des informations de base sur les données (nombre d'observations, nombre de variables, etc.). De plus, il contiendra une liste d'avertissements informant l'analyste de ce à quoi vous devez porter une attention particulière. Ces avertissements peuvent vous indiquer où vous pouvez concentrer vos efforts lors du nettoyage de vos données.
Présentation de la section de rapportAnalyse des variables exploratoires
Derrière la section Présentation du rapport, vous pouvez trouver des informations utiles sur chaque variable. Ils comprennent entre autres de petits diagrammes décrivant la distribution de chaque variable.
Informations sur la variable numérique d'âgeComme vous pouvez le voir dans l'exemple précédent, le profilage pandas nous donne des indicateurs utiles, tels que le pourcentage et le nombre de valeurs manquantes, ainsi que des indicateurs de statistiques descriptives que nous avons déjà vus. L'
Age
étant une variable numérique, la visualisation de sa distribution sous forme d'histogramme nous permet de conclure que nous avons une distribution à angle droit.
Lorsque l'on considère une variable catégorielle, les indicateurs affichés sont légèrement différents de ceux trouvés pour la variable numérique.
Informations sur les variables catégorielles de sexeÀ savoir, au lieu de trouver la moyenne, le minimum et le maximum, la bibliothèque de profilage pandas a trouvé le nombre de classes. Le
Sex
étant une variable binaire, ses valeurs sont représentées par deux classes.
Si vous, comme moi, souhaitez faire des recherches sur le code, vous serez peut-être intéressé par la façon dont la bibliothèque de profilage pandas calcule ces indicateurs. Sachant cela, étant donné que le code de la bibliothèque est ouvert et disponible sur GitHub, ce n'est pas si difficile. Comme je ne suis pas un grand fan de l'utilisation de «boîtes noires» dans mes projets, j'ai regardé le code source de la bibliothèque. Par exemple, voici le mécanisme de traitement des variables numériques représentées par la fonction
describe_numeric_1d :
def describe_numeric_1d(series, **kwargs): """Compute summary statistics of a numerical (`TYPE_NUM`) variable (a Series). Also create histograms (mini an full) of its distribution. Parameters ---------- series : Series The variable to describe. Returns ------- Series The description of the variable as a Series with index being stats keys. """ # Format a number as a percentage. For example 0.25 will be turned to 25%. _percentile_format = "{:.0%}" stats = dict() stats['type'] = base.TYPE_NUM stats['mean'] = series.mean() stats['std'] = series.std() stats['variance'] = series.var() stats['min'] = series.min() stats['max'] = series.max() stats['range'] = stats['max'] - stats['min'] # To avoid to compute it several times _series_no_na = series.dropna() for percentile in np.array([0.05, 0.25, 0.5, 0.75, 0.95]): # The dropna() is a workaround for https://github.com/pydata/pandas/issues/13098 stats[_percentile_format.format(percentile)] = _series_no_na.quantile(percentile) stats['iqr'] = stats['75%'] - stats['25%'] stats['kurtosis'] = series.kurt() stats['skewness'] = series.skew() stats['sum'] = series.sum() stats['mad'] = series.mad() stats['cv'] = stats['std'] / stats['mean'] if stats['mean'] else np.NaN stats['n_zeros'] = (len(series) - np.count_nonzero(series)) stats['p_zeros'] = stats['n_zeros'] * 1.0 / len(series) # Histograms stats['histogram'] = histogram(series, **kwargs) stats['mini_histogram'] = mini_histogram(series, **kwargs) return pd.Series(stats, name=series.name)
Bien que ce morceau de code puisse sembler assez volumineux et complexe, en fait, sa compréhension est très simple. Le fait est que dans le code source de la bibliothèque, il existe une fonction qui détermine les types de variables. S'il s'avérait que la bibliothèque rencontrait une variable numérique, la fonction ci-dessus trouvera les indicateurs que nous avons considérés. Cette fonction utilise des opérations pandas standard pour travailler avec des objets de type
Series
, comme
series.mean()
. Les résultats des calculs sont stockés dans le dictionnaire des
stats
. Les histogrammes sont générés à l'aide d'une version adaptée de la fonction
matplotlib.pyplot.hist
. L'adaptation vise à permettre à la fonction de fonctionner avec différents types d'ensembles de données.
Indicateurs de corrélation et échantillon des données étudiées
Après les résultats de l'analyse des variables, le profilage pandas, dans la section Corrélations, affiche les matrices de corrélation Pearson et Spearman.
Matrice de corrélation de PearsonSi nécessaire, il est possible, dans la ligne de code qui démarre la formation du rapport, de définir les valeurs de seuil utilisées dans le calcul de la corrélation. Ce faisant, vous pouvez indiquer quelle force de corrélation est considérée comme importante pour votre analyse.
Enfin, le rapport de profilage pandas, dans la section Exemple, affiche, à titre d'exemple, un élément de données provenant du début de l'ensemble de données. Cette approche peut conduire à des surprises désagréables, car les premières observations peuvent être un échantillon qui ne reflète pas les caractéristiques de l'ensemble de données.
Section contenant des exemples de donnéesPar conséquent, je ne recommande pas de prêter attention à cette dernière section. Au lieu de cela, il est préférable d'utiliser la commande
df.sample(5)
, qui sélectionnera au hasard 5 cas dans l'ensemble de données.
Résumé
Pour résumer ce qui précède, on peut noter que la bibliothèque de profilage pandas fournit à l'analyste quelques fonctionnalités utiles qui vous seront utiles dans les cas où vous devez rapidement avoir une idée générale approximative des données ou envoyer à quelqu'un un rapport sur l'analyse des données de renseignement. Dans le même temps, un véritable travail avec les données, en tenant compte de leurs caractéristiques, est effectué, comme sans utiliser le profilage pandas, manuellement.
Si vous voulez voir à quoi ressemble toute l'analyse d'intelligence des données dans un cahier Jupyter - jetez un œil à
ce que mon projet a créé à l'aide de nbviewer. Et dans
ce référentiel GitHub, vous pouvez trouver le code approprié.
Chers lecteurs! Comment commencez-vous à analyser de nouveaux ensembles de données?