L’exploration de données est une étape importante du workflow de Data science. Toutefois, Les gens ne s’y attardent pas beaucoup, souvent à tort.
La phase d’exploration de données permet de comprendre ses dernières. Grâce à l’analyse univariée et multivariée, on peut déduire certaines hypothèses qui pourront servir lors de la phase de modélisation.
L’analyse univariée permet d’explorer une seule feature à la fois. Cette analyse se base sur les statistiques descriptives. Ces dernières permettent de tirer des indications concises sur une feature donnée. Parmi ces indicateurs, on retrouve la moyenne, la médiane ainsi que les mesures de dispersion de données.
Dans cet article, nous allons voir comment obtenir ces informations statistiques à l’aide de Python. Rassurez vous, il ne s’agit pas d’un cours de statistiques. On ne s’intéressera qu’à la partie pratique des statistiques.
C’est parti !
Data Scientist : Person who is better at statistics than any software engineer and better at software engineering than any statistician
A propos du jeu de données
Le jeu de données qu’on va utiliser lors de cet article concerne la mesure de température dans certaines villes européennes. J’ai effectué à ce Data Set quelques transformations mineurs avec Microsoft Excel pour en faciliter son traitement avec Python. Lors de la suite de l’article, on verra les principales métriques statistiques qu’un data scientist sera potentiellement amené à utiliser lors de l’exploration univariée de ses features. On utilisera python pour calculer ces métriques sur la ville Italienne : Milan.
Mesures statistiques
Dans cette section, on verra certaines métriques simples comme la moyenne, la médiane et les quantiles.
Calculer la moyenne
La moyenne est la métrique évidente qui saute aux yeux. Son calcul est simple : additionner toutes les valeurs d’une feature et les diviser par le nombre d’observations.
En Python, à l’aide du module numpy, on peut calculer la moyenne de température à Milan :
import numpy as np import matplotlib.pyplot as plt import pandas as pd from scipy import stats as st import matplotlib.pyplot as plt dataset = pd.read_csv("temperature.csv", sep=";", encoding='ISO-8859-1') print (dataset.head()) milanoData = dataset['Milan'] moyenne = np.mean(milanoData) # la fonction round est juste pour arrondir a deux nombre apres virgule print ("Moyenne de degree a milan est : ", round(moyenne, 2))
le output Python donne :
La Moyenne de degree a milan est : 12.67
La moyenne est sensible aux valeurs extrêmes (outliers). Par conséquent, il est toujours utile de calculer aussi la médiane qui est moins sensible à ces valeurs.
Calculer la médiane
La médiane est une valeur réelle m telle qu’il y ait au moins autant d’observations inférieures ou égales à m que supérieure ou égales à m. En d’autres termes, il s’agit de trouver « le point central » des valeurs d’une feature donnée.
La formule de calcul de la médiane est la suivante :
On peut calculer la médiane avec le code python suivant :
mediane = np.median(milanoData) print ("La mediane de degree a milan est : ", round(mediane, 2))
le output Python donne :
La mediane de degree a milan est : 12.85
La médiane a une propriété statistiques intéressante. En effet, elle est moins sensible aux outliers que la moyenne. Par ailleurs, il ne faut pas se baser seulement sur la moyenne mais prendre aussi en compte la valeur médiane de la feature.
Calculer les quantiles
Un quantile d’ordre (avec 0 < < 1 ) est la plus petite valeur de de la série de données (de la feature), tel qu’au moins des autres valeurs lui sont inférieures.
On reconnait deux quantiles particuliers le et qu’on appelle respectivement des quartiles. Le Quartile correspond au quantile et le quartile correspond au quantile .
Note : Vous l’avez peut être remarqué, n’est rien d’autre que la médiane.
Les quartiles Q1 et Q3
Le premier quartile est la plus petite valeur de la série de données tel que 25% au moins des autres valeurs lui sont inférieures ou égales.
Pour calculer le quartile en python, on utilise la fonction percentile :
# On calcule le quantile 0,25 qui est le quartile Q1 Q1 = round(np.percentile(milanoData, 25)) print("Quartile Q1 vaut : ", Q1)
le output Python donne :
Quartile Q1 vaut : 6.0
Le troisième quartile est la plus petite valeur de la série de données tel que 75% au moins des autres valeurs lui sont inférieures ou égales.
Pour calculer le quartile en Python :
# On calcule le quantile 0,75 qui est le quartile Q3 Q3 = round(np.percentile(milanoData, 75)) print("Quartile Q3 vaut : ", round(np.percentile(milanoData, 75)))
le output Python donne :
Quartile Q3 vaut : 20.0
Mesures de dispersion des données
Les métriques de dispersion permettent de savoir comment les valeurs d’une feature se « positionnent » dans leur espace unidimensionnel (1 Dimension).
Dans certaines situations de modélisation en Machine Learning, comprendre comment les données sont réparties permet d’émettre de meilleures hypothèses sur le phénomène à modéliser.
La variance
La variance indique de quelle manière la série de données d’une feature se disperse autour de la moyenne. Une variance élevée indique que les valeurs sont très écartées les unes des autres et vice versa.
Le calcul est noté avec le symbole (sigma squared) comme suit :
Pour calculer la variance d’une feature en Python, on procède ainsi
variance = np.var(milanoData) print ("La variance de degree a milan est : ", round(variance, 2))
Ce qui donne :
La variance de degree a milan est : 61.17
L’écart-type (Standard Deviation)
L’écart type est aussi une mesure de dispersion des données. Il est tout simplement la racine carrée de la variance. On utilise souvent l’écart type que la variance pour mieux appréhender le degré de dispersion des données.
En python, il se calcule ainsi
ecartType = np.std(milanoData) print ("Le ecart type de degree a milan est : ", round(ecartType, 2))
Ce qui donne :
Le ecart type de degree a milan est : 7.82
L’écart interquartile
L’écart intequartile mesure la dispersion de 50% des données du dataset. Les 50% des données correspond à celles comprises entre le premier quartile Q1 et le 3eme quartile Q3.
L’écart interquartile est tout simplement la soustraction du troisième quartile du premier :
# On calcule le quantile 0,25 qui est le quartile Q1 Q1 = round(np.percentile(milanoData, 25)) # On calcule le quantile 0,75 qui est le quartile Q3 Q3 = round(np.percentile(milanoData, 75)) print("Quartile Q3 vaut : ", round(np.percentile(milanoData, 75))) # L ecart interquartile est Q3 - Q1 print("L ecart interquartile vaut : ", Q3 - Q1)
Ce qui donne :
L ecart interquartile vaut : 14.0
>> Téléchargez le code source depuis mon espace Github <<
Conclusion
Nous venons de mettre en oeuvre certains outils statistiques à l’aide de Python. Ces indicateurs permettent d’avoir un « résumé » statistique sur une feature d’un Dataset.
L’exploration univariée est à appliquer sur les features qui nous paraissent pertinentes pour résoudre le problème métier. En fonction de ce résumé statistique, nous pourrons émettre certaines hypothèses concernant le modèle prédictif.
Toutefois, l’analyse univariée n’est qu’une partie de l’exploration des données. L’analyse multivariée permet de comprendre les relations entre les features et à quel degré ces dernières agissent sur le phénomène à modéliser.
Si vous avez d’autres indicateurs qui peuvent être pertinents lors de l’analyse univariée, partagez-les ! Si vous avez des questions n’hésitez pas à me les poser par un commentaire, je ferai de mon mieux pour y répondre.
Concernant les autres indicateurs , je pense au mode, aux coefficients de( variation, asymétrie, aplatissement (kurtosis))