Cet article à la suite de Datascience avec Python - Découverte de Numpy, je vous conseille d'aller le voir si vous ne l'avez pas encore lu !
Les statistiques sont essentielles en Datascience. En effet, elles permettent de répondre à de nombreuses questions :
J'ai centré ces questions sur la vente d'un produit en ligne, mais on peut les adapter à n'importe quel domaine.
Bon, maintenant que vous savez à quoi servent les statistiques, on va pouvoir plonger dans le vif du sujet !
On va commencer par définir quelques termes essentiels aux statistiques.
Ensuite, nous avons différentes approches statistiques :
Puis nous avons aussi différents types de données :
Finalement, on va également définir quelques métriques de bases :
Les métriques à utiliser dépendent des cas auxquels on fait face.
Si la distribution est normale ou symétrique (répartition homogène des valeurs), il vaut mieux utiliser la moyenne ou la déviation standard. Si la distribution est asymétrique ou comporte beaucoup de valeurs aberrantes, il vaut mieux utiliser la médiane ou l'étendue.
Maintenant que vous avez la théorie, on va pouvoir découvrir rapidement quelques fonctions utiles pour les statistiques en Python.
Normalement vous savez déjà ce qu'est Numpy, et vous savez également manipuler des tableaux. On va donc voir des fonctions pour calculer des statistiques sur ces tableaux, en utilisant Numpy :
Implémentation :
>>> arr = np.array([3, 12, 11, 13, 9, 4, 6, 15, 3, 12, 17])
>>> np.mean(arr)
9.545454545454545
>>> np.median(arr)
11.0
>>> np.std(arr)
4.67806557464313
>>> np.var(arr)
21.884297520661157
>>> np.average(arr)
9.545454545454545
>>> np.percentile(arr, 25)
5.0
>>> np.amin(arr)
3
>>> np.amax(arr)
17
Ensuite, on peut également utiliser Pandas pour analyser des statistiques, notamment groupby. Cette opération permet de séparer un DataFrame, d'appliquer une fonction, et de grouper les résultats. Voici un exemple :
>>> df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
... 'Parrot', 'Parrot'],
... 'Max Speed': [380., 370., 24., 26.]})
>>> df
Animal Max Speed
0 Falcon 380.0
1 Falcon 370.0
2 Parrot 24.0
3 Parrot 26.0
>>> df.groupby(['Animal']).mean()
Max Speed
Animal
Falcon 375.0
Parrot 25.0
On crée un DataFrame contenant 4 animaux, répartis dans 2 espèces. On utilise ensuite groupby
qui nous permet de calculer la vitesse maximale moyenne en groupant par espèce, plutôt que de la calculer pour chaque animal.
Pour mesurer la répartition des valeurs d'une série de données, le plus souvent on utilisera les quantiles. Ils permettent de situer une valeur par rapport aux autres.
L'écart interquartile est également très utilisé. Il correspond à la différence entre le 3ème quartile et le 1er.
>>> arr = np.array([3, 12, 11, 13, 9, 4, 6, 15, 3, 12, 17])
>>> q1 = np.percentile(arr, 25)
>>> q3 = np.percentile(arr, 75)
>>> iqr = q3 - q1
>>> iqr # Ecart interquartile
7.5
Généralement, on considère qu'une valeur est aberrante si sa valeur est inférieure à Q1 - 1.5 x IQR ou supérieure à Q3 + 1.5 x IQR où Q1 est le premier quartile, Q3 le troisième, et IQR l'écart interquartile.
>>> lower = q1 - 1.5*iqr
>>> upper = q3 + 1.5*iqr
>>> lower
-6.25
>>> upper
23.75
Dans notre exemple, si une valeur de la série est inférieure à -6.25 ou supérieure à 23.75, elle sera considérée comme aberrante et il vaut mieux la supprimer.
C'est la fin de ce second article à propos de la Datascience avec Python. Il aura été plutôt court, mais aura servi à poser les bases des statistiques, ce qu'il est essentiel de maitriser en Datascience.
Si l'article vous a plus, si vous souhaitez faire un retour, ou s'il y a quelque chose que vous n'avez pas comprise, n'hésitez pas à me contacter.
On se retrouve dans un prochain article pour la suite de votre apprentissage de la Datascience avec Python.