Cours
Data science versus statistiques
D’après notre infographie « Learn Data Science In 8 (Easy) Steps », l’une des premières étapes pour apprendre la data science consiste à bien maîtriser les statistiques, les mathématiques et le machine learning.
Si vous vous en souvenez, l’étape suivante est d’apprendre à coder.
Mais une fois que vous connaissez suffisamment Python pour faire de la data science, il est temps de consolider vos acquis.
Les thèmes statistiques pour la data science que ce blog aborde et pour lesquels il propose des ressources sont :
Cette liste n’épuise pas les statistiques utilisées en data science, mais elle vous mettra sur les rails. :)
Au passage, si vous cherchez encore à apprendre Python pour la data science, envisagez notre cours Intro to Python For Data Science. Il vous aidera à appliquer les statistiques avec Python.
Apprendre les statistiques pour la data science est très concret : n’oubliez pas de vous entraîner et de mettre en pratique les notions théoriques vues au début de votre parcours.
Mais au juste, quelle est la différence entre statistiques et data science ?
Les deux sont souvent confondues, et certains estiment qu’il n’y a pas de différence et qu’un data scientist est en réalité un statisticien.
Au final, si l’on met ces opinions de côté un instant, on peut s’accorder sur le fait que les statistiques sont l’un des piliers de la data science.
Statistiques avec Python
Le billet d’aujourd’hui se concentre sur la façon d’apprendre les statistiques avec Python, y compris les thèmes d’analyse statistique à explorer dans votre parcours data science avec Python.
Pourquoi Python ?
R est un excellent point de départ pour les statistiques. Conçu pour le calcul et la visualisation statistiques, il offre une multitude de packages. Python, de son côté, est un langage généraliste aux usages variés.
Cela dit, vous pouvez aussi faire des statistiques avec Python.
Certains l’utilisent pour ses performances ou parce qu’il permet de faire beaucoup de choses que R sait faire.
En substance, sa popularité ne cesse de croître et le nombre de packages dédiés à la data science a fortement augmenté ces dernières années.
En bref, il existe de très bonnes raisons d’utiliser Python pour l’analyse statistique.
L’outil que vous choisirez dépendra finalement du type d’analyse que vous souhaitez mener.
Alors, prêt(e) à démarrer les statistiques en Python ?
PS : si vous cherchez aussi des ressources pour apprendre les statistiques avec R, consultez les open courses de DataCamp ou Intro to Statistics With R.

Statistiques et théorie des probabilités en Python
Le premier sujet à aborder est sans doute celui des statistiques et de la théorie des probabilités. Outre de nombreuses vidéos et cours, il existe beaucoup d’ouvrages (imprimés) pour bien démarrer les statistiques en Python.
Introduction aux statistiques avec Python
Pour une introduction, ce tutoriel avec des exemples concrets est un excellent point de départ. Les notebooks vous présenteront des notions comme la moyenne, la médiane, l’écart-type, ainsi que les bases des tests d’hypothèses et des lois de probabilité.
Une belle manière de se lancer, puisqu’il s’inspire des livres « Think Bayes » et « Think Stats », deux recommandations phares que vous retrouverez plus bas !
Si vous cherchez des livres, testez cet ouvrage gratuit sur les statistiques computationnelles en Python, qui propose à la fois une introduction à la programmation Python et des thèmes comme Markov Chain Monte Carlo, l’algorithme EM (Expectation-Maximization), les méthodes de rééchantillonnage, etc.
Ou achetez ce livre de Thomas Haslwanter pour une introduction générale aux tests statistiques courants, à la régression linéaire, ainsi qu’à des notions d’analyse de survie et de statistiques bayésiennes. Notez qu’il prend les sciences de la vie et médicales comme domaine d’application.
Comme vous le voyez, ces deux livres abordent aussi des thèmes plus avancés en statistiques avec Python.
Si vous préférez les vidéos, regardez ce tutoriel d’analyse statistique avec SciPy par Christopher Fonnesbeck, professeur assistant au département de biostatistique de la Vanderbilt University School of Medicine. Vous avez aussi cette vidéo de Gaël Varoquaux sur les statistiques inférentielles et exploratoires avec Python, qui utilise notamment les packages Pandas et StatsModels.
Vous verrez que ces ressources sont assez générales pour vous lancer dans les statistiques avec Python.
Si vous cherchez des ressources pour aller vite sur les bases, consultez le cours DataCamp Statistical Thinking in Python animé par Justin Bois. Vous y verrez l’analyse exploratoire des données (EDA), la variance et la covariance, les moyennes et médianes, les lois de probabilité, et bien plus.
Théorie des probabilités avec Python
La théorie des probabilités est également essentielle lorsque vous apprenez les statistiques avec Python. Elle analyse les phénomènes aléatoires : le résultat d’un événement aléatoire est non déterministe, il peut prendre plusieurs valeurs possibles et l’issue est régie par le hasard.
La théorie des probabilités est à l’origine conceptuelle des statistiques.
Les ressources ci-dessus offrent une introduction générale aux statistiques et, parfois, couvrent aussi les probabilités (ce qui est logique), mais il existe des ressources dédiées exclusivement à ce sujet.
Vous pouvez notamment consulter :
Une recommandation de premier plan : le cours Computational Probability and Inference sur EdX. Ce cours pratique, animé par des enseignants du MIT, vous mettra à l’aise avec les principes de probabilité et d’inférence.
Lisez aussi ce livre gratuit, rédigé par le professeur Brian Blais, un manuel d’inférence statistique introductif, motivé par la probabilité comme logique.
Lois de probabilité en Python
Pour vraiment apprendre les statistiques avec Python en data science, vous devez développer une bonne intuition de « quand utiliser quelle loi ». Une loi (ou distribution) recense ou modélise toutes les valeurs possibles (ou intervalles) des données et leur fréquence d’apparition.
En jetant un œil à cette liste, vous verrez qu’il y en a un bon nombre à considérer.
Pour une introduction aux lois uniforme, normale, binomiale et de Poisson avec SciPy, consultez cet article de blog.
Une recommandation clé : le chapitre 4 du livre « Think Stats: Probability and Statistics for Programmers », qui présente les lois continues. Le chapitre 5 propose également une excellente introduction aux lois de probabilité.
Pour visualiser des distributions, vous pouvez notamment utiliser des histogrammes. Pour un aperçu rapide, voyez cet IPython notebook, qui introduit les statistiques descriptives (moyennes, quantiles, histogrammes) et leurs relations. Pour approfondir la visualisation des distributions, consultez ce tutoriel Seaborn.
Il existe aussi ce tutoriel plotly sur les statistiques de base en Python.
Notez que, si vous souhaitez suivre un cours couvrant certaines lois (binomiale, Poisson) et des fonctions de répartition comme la fonction de répartition empirique, ou apprendre à visualiser ces distributions, consultez le cours DataCamp Statistical Thinking in Python.

Tests d’hypothèses en Python
Les tests d’hypothèses sont des tests statistiques utilisés pour déterminer s’il existe suffisamment de preuves, dans un échantillon de données, pour inférer qu’une condition particulière est vraie pour l’ensemble de la population.
Deux notions sont centrales : l’hypothèse nulle et l’hypothèse alternative, et la p-valeur est également fondamentale. Ces concepts sont difficiles à appréhender au début : il faut un effort pour comprendre la valeur alpha (ou seuil de signification) associée à la p-valeur et ce qui distingue le rejet de la non-rejet de l’hypothèse nulle.
Vous trouverez un tutoriel sur le site de SciPy qui traite brièvement des p-valeurs et de l’estimation.
Ces cours SciPy vous présenteront le test t, que vous pouvez utiliser pour tester votre hypothèse en analysant les moyennes de deux populations. Vous pouvez aussi consulter cet article pour explorer les tests t.
Si vous préférez lire, la recommandation phare « Think Stats: Probability and Statistics for Programmers » reste valable pour les tests d’hypothèses : le chapitre 7 vous apprendra tout ce qu’il faut si vous n’avez pas déjà parcouru les chapitres sur les distributions.
Pour celles et ceux qui cherchent des cours, Statistical Thinking in Python (Part 2) sur DataCamp propose une introduction et des exemples de tests pour acquérir les connaissances et la pratique nécessaires, et bien plus encore.
Modélisation statistique et ajustement en Python
Maintenant que vous êtes à l’aise avec les tests d’hypothèses et les distributions, vous pouvez revoir ou approfondir la manière de construire des modèles statistiques et d’ajuster des distributions aux données.
Les modèles statistiques approchent le processus qui génère vos données et servent à résumer, prédire ou simuler. En d’autres termes, ils représentent des phénomènes complexes ayant produit les données et peuvent être utilisés pour des synthèses, des prévisions ou des simulations.
Cela suppose de pouvoir évaluer l’adéquation de vos données au modèle.
Pour obtenir le meilleur ajustement entre modèle et données, on recourt à l’estimation, qui consiste à inférer des propriétés d’une population à partir d’un échantillon. Avec les tests d’hypothèses, c’est une autre façon d’apprendre quelque chose de la population via l’échantillon.
Ce tutoriel introduit l’ajustement de modèles à l’aide de SciPy.
La modélisation et l’ajustement statistiques des données constituent aussi un chapitre de ce tutoriel d’analyse statistique, développé en notebooks par Christopher Fonnesbeck. Ce nom vous est familier désormais !
Pour les amateurs de vidéos, ce tutoriel est également disponible sur YouTube en quatre vidéos et couvre notamment l’estimation (maximum de vraisemblance et méthode des moments).
Vous pouvez voir ces vidéos ici.
Au passage, si vous souhaitez en savoir plus sur l’estimation du maximum de vraisemblance pour la classification statistique des formes, ne manquez pas cet IPython notebook ou celui-ci, qui expliquent son calcul pour différentes distributions. Ces notebooks font partie du dépôt « pattern classification » de Sebastian Raschka, qui propose aussi un dépôt pour son Python Machine Learning book.
Machine learning avec Python
Avec cette dernière suggestion de livre sur le machine learning, vous vous demandez peut-être : n’étions-nous pas sur les statistiques ?
Exact.
Le machine learning et les statistiques ne sont pas identiques, mais posent la même question : comment apprendre à partir des données ?
Les techniques de machine learning et de statistiques sont d’ailleurs souvent utilisées conjointement, par exemple en reconnaissance de formes ou en fouille de données.
Le machine learning est un outil précieux dans votre boîte à outils data science. C’est un sujet vaste, et vous pouvez y consacrer beaucoup de temps pour en maîtriser les concepts et algorithmes.
Autant commencer dès maintenant !
Mais comme le champ est large et qu’il existe pléthore de ressources pour se former au machine learning en Python, il n’est pas toujours évident de savoir par où commencer.
Le cours de machine learning généraliste d’Andrew Ng est assez théorique, mais reste recommandé si vous souhaitez d’abord aborder les concepts et algorithmes sous un angle théorique.
Il existe toutefois de nombreuses ressources plus pratiques pour vous lancer.
En voici quelques-unes :
Cette introduction en douceur au machine learning avec SciPy vous mettra sur la bonne voie. Idéale pour rafraîchir vos bases en statistiques et bâtir dessus, Kyle Kastner vous guide à travers l’estimation de paramètres, la régression, l’estimation de modèle et la classification de base.
Si vous préférez un livre, consultez l’IPython Interactive Computing and Visualization Cookbook. Le chapitre 8 introduit les concepts fondamentaux et illustre des algorithmes comme la régression logistique, Naive Bayes, k plus proches voisins, SVM, forêts aléatoires, etc., avec Scikit-learn.
Pour un tutoriel d’introduction à Scikit-learn, rendez-vous ici.
Et ne manquez pas ce tutoriel sur le classifieur Naive Bayes.
Analyse de régression avec Python
La régression est incontournable en statistiques pour la data science. C’est un processus statistique qui estime la relation entre des variables.
Pour comprendre comment faire de la régression avec Python, commencez par du contenu sur la régression linéaire.
Mais lisez d’abord ce tutoriel : il couvre l’analyse de régression avec StatsModels et Quandl. Il explique d’abord les différents types de régression, puis fournit un exemple pratique.
Poursuivez avec ce tutoriel sur la régression linéaire pour vous exercer.
Ensuite, passez aux régressions non linéaires. Pour un tutoriel sur la régression ridge et lasso en Python, consultez cet article d’Analytics Vidhya. L’article utilise NumPy, Pandas, Matplotlib et Scikit-learn pour expliquer clairement l’approche.
Vous trouverez aussi un excellent notebook sur la régression logistique ici.
Et ne manquez pas ce billet de blog Yhat sur la régression logistique avec Rodeo.

Réflexion et modélisation bayésiennes en Python
Les statistiques bayésiennes expriment l’évidence sur l’état réel du monde en termes de degrés de croyance, appelés probabilités bayésiennes. Parfois, vous adopterez une approche bayésienne pour vos problèmes de data science.
Ce que cela signifie exactement deviendra clair avec cette excellente série en cinq parties qui introduit le fréquentisme et le bayésianisme.
Si vous préférez les livres, tournez-vous vers « Think Bayes: Bayesian Statistics in Python ». « Bayesian Methods For Hackers » est une autre ressource de référence pour s’initier à l’inférence bayésienne. Deux lectures incontournables pour démarrer la réflexion et la modélisation bayésiennes !
Ou, si vous voulez une introduction sous forme de notebook, parcourez ce tutoriel qui présente le théorème de Bayes.
Ne manquez pas non plus ce tutoriel sur l’analyse statistique bayésienne en Python et les vidéos YouTube associées, qui introduisent les statistiques bayésiennes, Markov chain Monte Carlo, PyMC, la modélisation hiérarchique, ainsi que la vérification et la validation de modèles.
Pour un tutoriel sur l’ajustement de modèles bayésiens en Python, consultez ces IPython Notebooks et la vidéo YouTube associée, un cours de Jake VanderPlas lors de l’ESAC Data Analysis and Statistics Workshop 2014.
Si vous souhaitez réutiliser des ressources, reportez-vous à l’IPython Interactive Computing and Visualization Cookbook, déjà mentionné pour le machine learning. Le chapitre 7 traite de l’analyse statistique des données et met l’accent sur les méthodes fréquentistes et bayésiennes pour les tests d’hypothèses, l’estimation paramétrique et non paramétrique, et l’inférence de modèles.
Voici un tutoriel sur PyMC, un module Python qui implémente des modèles statistiques bayésiens et des algorithmes d’ajustement, notamment Markov Chain Monte Carlo (MCMC). À voir aussi : ce tutoriel pour apprendre à implémenter des modèles de régression linéaire bayésienne avec PyMC3.
Chaînes de Markov
En termes simples, les chaînes de Markov sont des systèmes mathématiques qui « sautent » d’un « état » à un autre. Ces états peuvent être une situation ou un ensemble de valeurs. Vous disposez donc d’une liste d’états et, par-dessus, la chaîne de Markov vous donne la probabilité de passer, ou « transiter », d’un état à un autre.
Certaines ressources mentionnées plus haut introduisent déjà ce sujet.
En complément, vous pouvez regarder cette vidéo : un tutoriel qui utilise notamment la simulation de Monte Carlo et le rééchantillonnage pour explorer les tests d’hypothèses et la modélisation statistique. Une bonne manière de consolider vos connaissances avant d’aborder les chaînes de Markov.
De plus, le livre Computational Statistics in Python vous apportera des éclairages sur les chaînes de Markov. C’est une excellente introduction au Markov Chain Monte Carlo.
Bien démarrer avec les statistiques en Python
Cette liste a vocation à vous lancer. Vous verrez que de nombreuses ressources se recoupent, et vous en trouverez sans doute d’autres. Tenez-nous au courant sur Twitter !
Dans tous les cas, il n’y a plus de raison d’attendre pour commencer à apprendre les statistiques avec Python.