ProPython
Datascience avec Python - Statistiques
14 Jun, 2021

Datascience avec Python - Statistiques

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 :

  • Comportements des utilisateurs - Est-ce que quelqu'un est susceptible d'acheter un objet en se basant sur son historique d'achat ? Quel moyen de paiement utilise-t-il le plus ?
  • Marketing digital - Cibler les personnes les plus susceptibles d'acheter nos objets avec nos pubs, trouver quelles pubs nous permettent d'avoir le meilleur taux de conversion.
  • Optimisation - Comment peut-on optimiser nos pubs en fonction de nos campagnes précédentes.
  • Habitudes - Quelles sont les habitudes des consommateurs de nos produits ?

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 !

Terminologie

On va commencer par définir quelques termes essentiels aux statistiques.

  • Population - Un groupe d'individus.
  • Variable - Un facteur mesurable qui est susceptible de varier.
  • Effet de groupe - Comment la taille de la population influe-t-elle sur les variables.
  • Sélection aléatoire - Sélectionner aléatoirement un individu d'une population.
  • Estimation ponctuelle - Estimation d'une valeur quelconque d'une population, par exemple la taille moyenne d'un groupe de 100 personnes de 16 ans.
  • Intervalle de confiance - Plage de valeurs autour des estimations ponctuelles qui contiennent probablement la valeur réelle d'une variable dans la population/l'échantillon. (Ex: intervalle de confiance à 95% de la taille moyenne d'un groupe de 100 personnes de 16 ans : [1,65 ; 1,73]. Cela signifie que si je prends 100 personnes de 16 ans, peu importe le groupe, j'ai 95% de chance que leur taille moyenne soit comprise entre 1,65 et 1,73)
  • Marge d'erreur - Utilisée pour estimer les erreurs de calcul ou les erreurs, c'est une valeur calculée ajoutée et soustraite à une estimation ponctuelle.

Ensuite, nous avons différentes approches statistiques :

  • Soit on va considérer un très grand nombre de données, et en déduire des statistiques (ex: 90% des français sont droitiers) : Statistiques descriptives
  • Ou bien on va prendre un petit échantillon d'une population et en déduire des statistiques (ex: sur 1000 personnes, 100 prennent le métro tous les jours => 10% des gens prennent le métro tous les jours) : Statistiques inférentielles

Puis nous avons aussi différents types de données :

  • Données quantitatives - Données quantifiables, par exemple taille, poids, etc...
  • Données qualitatives - Données non quantifiables, par exemple le genre, la couleur des yeux, etc...

Finalement, on va également définir quelques métriques de bases :

  • Moyenne - Somme de toutes les valeurs divisée par le nombre de valeurs.
  • Médiane - Nombre du milieu dans une série de valeurs rangées par ordre croissant.
  • Mode - Ou valeur dominante, c'est la valeur la plus présente dans une série de valeurs.
  • Etendue - C'est l'écart entre la plus grande et la plus petite valeur d'une série de valeurs.
  • Déviation standard - Distance moyenne des points par rapport à une moyenne.
  • Variance - Moyenne des carrés des écarts à la moyenne.
  • Quantile - Les quantiles sont des valeurs permettant de séparer des séries de valeurs. Les quartiles sont par exemple les 3 quantiles divisant un ensemble de données en 4 groupes de taille égale.

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.

Programmation

Maintenant que vous avez la théorie, on va pouvoir découvrir rapidement quelques fonctions utiles pour les statistiques en Python.

Métriques de base

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 :

  • np.mean() - Moyenne
  • np.median() - Médiane
  • np.std() - Déviation standard
  • np.var() - Variance
  • np.average() - Vous permet de calculer une moyenne pondérée, si vous précisez les poids en paramètre. Sinon, tous les poids sont égaux à 1 par défaut.
  • np.percentile() - nième quantile.
  • np.amin() - Valeur minimale.
  • np.amax() - Valeur maximale.

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

Groupby

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.

Mesure de la répartition

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.

Le mot de la fin

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.

Laisser un commentaire

Premium - 15€/mois

L'accès à des articles inédits, à une multitude de ressources, à de nouveaux projets, mais également à des vidéos explicatives, découvrez ici pourquoi passer premium.

Articles liés

Catégories

Ressources

Retrouvez une collection de ressources (des scripts, des fiches résumé, des images...) liées aux articles du blog ou au Python.
Voir

Contact

contact@propython.fr
Se connecter pour envoyer un message directement depuis le site.

Navigation

AccueilSe connecterCréer un compteRessourcesPremium

Catégories

Pages légales

Politique de confidentialitéMentions légalesConditions générales de vente