Introduction
Ce cours rassemble l’ensemble du contenu du cours Python pour la data science que je donne à l’ENSAE depuis 2018. Ce cours était auparavant donné par Xavier Dupré. Quelques éléments supplémentaires sont disponibles dans les slides d’introduction. Des éléments plus avancés sont présents dans un autre cours consacré à la mise en production de projets data science que je donne avec Romain Avouac à l’ENSAE (ensae-reproductibilite.github.io/website)
Python
est un langage qui a déjà plus de trente ans
mais qui a connu, au cours de la décennie 2010, une
nouvelle jeunesse du fait de l’engouement pour
la data science.
Python
, plus que tout autre
langage informatique, réunit des communautés aussi
diverses que des statisticiens, des développeurs,
des gestionnaires
d’applications ou d’infrastructures informatiques,
des lycées - Python
est au programme du bac français
depuis quelques années - ou des chercheurs
dans des champs à la fois théoriques et appliqués. Contrairement
à beaucoup de langages informatiques qui fédèrent
une communauté assez homogène, Python
est parvenu à réunir
largement grâce à quelques principes centraux : la lisibilité
du langage, la simplicité à utiliser des modules,
la simplicité à l’associer à des langages plus performants
pour certaines tâches données, l’énorme volume de documentation
disponible en ligne…
Être le deuxième meilleur langage pour réaliser telle ou telle
tâche
peut ainsi être une source de succès lorsque la concurrence ne dispose
pas d’un éventail aussi large d’avantages.
Le succès de Python
, de par sa nature de
langage couteau-suisse, est indissociable
de l’émergence du profil du data scientist, individu
capable de s’intégrer à différents niveaux dans la valorisation
de données.
Davenport and Patil (2012a), dans la Harvard Business Review,
ont ainsi pu parler du “boulot le plus sexy du 21e siècle”
et ont pu, dix ans plus tard, faire un panorama complet de l’évolution
des compétences attendues d’un data scientist dans
la même revue (Davenport and Patil 2012b).
La richesse de Python
permet de l’utiliser dans toutes les phases
du traitement de la donnée, de sa récupération et structuration à partir de
sources diverses à sa valorisation.
Par le prisme de la data science, nous verrons que Python
est
un très bon candidat pour assister les data scientists dans tous
les aspects du travail de données.
Ce cours introduit différents outils qui permettent de mettre en relation
des données et des théories grâce à Python
. Néanmoins, ce cours
va au-delà d’une simple introduction au langage et propose
des éléments plus approfondis, notamment sur les dernières
innovations permises par la data science dans les méthodes de travail.
Pourquoi faire du Python
pour l’analyse de données ?
Le succès de scikit-learn et
de Tensorflow dans la communauté
de la Data-Science ont beaucoup contribué à l’adoption de Python
. Cependant,
résumer Python
à ces quelques librairies serait réducteur tant il s’agit
d’un véritable couteau-suisse pour les data scientists,
les social scientists ou les économistes.
L’intérêt de Python
pour un data scientist ou data economist
va au-delà du champ du Machine Learning.
Comme pour R
, l’intérêt de Python est son rôle central dans un
écosystème plus large autour d’outils puissants, flexibles et open-source.
Python
concurrence très bien R
dans son domaine de prédilection, à
savoir l’analyse statistique sur des bases de données structurées.
Comme dans R
, les dataframes sont un concept central de Python
.
Python
est néanmoins bien plus complet dans certains domaines.
Outre le Machine Learning,
Python
est mieux adapté aux données volumineuses que
R
. Python
est également meilleur que R
pour faire
du webscraping ou accéder à des données par le biais d’API.
Dans le domaine de l’économétrie, Python
offre
l’avantage de la simplicité avec un nombre restreint de packages (scikit
et
statsmodels
) permettant d’avoir des modèles très généraux
(les generalized estimating equations)
alors qu’il faut
choisir parmi une grande variété de packages en R
pour obtenir les
modèles équivalents. Dans le domaine du Deep Learning, Python
écrase
la concurrence.
Au contraire, dans certains domaines, R
reste meilleur, même si les
évolutions très récentes de certains outils peuvent amener à réviser
ce constat. Historiquement,
R
était très bien intégré au langage de publication Markdown
ce qui,
permet la construction de documents reproductibles très raffinés.
L’émergence récente de Quarto
, héritier de R Markdown
développé par
la société Posit
permet aux utilisateur de Python
de bénéficier
également de la richesse de cette approche pour leur langage de prédilection.
Ce site web, à l’arborescence relativement complexe, est ainsi
construit grâce à cet outil qui permet à la fois de tester les blocs
de code présentés mais aussi de produire de manière automatisée les
tableaux et graphiques présentés. S’il fallait trouver un point faible
à Python
par rapport à R
dans le domaine de la data science
c’est sur la production de graphiques. matplotlib
et seaborn
, qui sont
présentés dans la partie visualisation, sont d’excellents outils. Néanmoins,
ggplot2
, l’équivalent en R
est plus facile de prise en main et
propose une syntaxe extrêmement flexible, qu’il est difficile de ne pas
apprécier. Cependant, l’écosystème de la
visualisation de données est en pleine révolution avec le succès
d’Observable
qui
rapproche l’écosystème JavaScript
des développeurs web
de la communauté des analystes de données.
Un des avantages comparatifs de Python
par rapport à d’autres
langages (notamment R
et Julia
) est sa dynamique,
ce que montre l’explosion du nombre de questions
sur Stack Overflow
.
Cependant, il ne s’agit pas bêtement d’enterrer R
.
Au contraire, outre leur logique très proche,
les deux langages sont dans une phase de convergence avec des initiatives comme
reticulate
,
quarto
ou
snakemake qui
permettent, de manière différente, de créer des chaînes de traitement
mélangeant R
et Python
.
Une autre raison pour laquelle cette guéguerre R
/Python
n’a pas
de sens est que les bonnes
pratiques peuvent être transposées de manière presque transparente d’un
langage à l’autre. Il s’agit d’un point qui est développé plus amplement
dans le cours plus avancé que je donne avec Romain Avouac en dernière année
d’ENSAE : ensae-reproductibilite.github.io/website.
A terme, les data scientists et chercheurs en sciences sociales ou
économie utiliseront
de manière presque indifférente, et en alternance, Python
et R
. Ce cours
présentera ainsi régulièrement des analogies avec R
pour aider les
personnes découvrant Python
, mais connaissant déjà bien R
, à
mieux comprendre certains messages.
Objectif du cours
Le but de ce cours est de rendre autonome sur
l’utilisation de Python
dans un contexte de travail de data scientist ou de
social scientist (économie, sociologie, géographie…).
Autrement dit,
il présuppose qu’on désire faire un usage intense
de données dans un cadre statistique rigoureux.
La data science est un ensemble de techniques visant à donner du sens à des sources de données diverses. Selon les organisations, les data scientists peuvent ainsi être à l’interface de projets nécessitant un large spectre de compétences (analyse de données textuelles, représentation graphique interactive…), avoir des interactions avec des profils très différents (experts métiers, développeurs, data architect, data engineer…) voire adopter un peu tous ces rôles.
Les innovations
récentes de la data science ne se réduisent
néanmoins
pas qu’à des découvertes méthodologiques.
La data science propose un ensemble de
techniques et de méthodes de travail
pour réduire les coûts de passage
d’un protype à une chaine
de production pérenne.
Ce cours introduit à quelques notions
sur le sujet, notamment les
pipelines scikit
, pour adopter
dès l’apprentissage du langage
quelques bons réflexes (ensae-reproductibilite.github.io/website).
Public cible
Ce cours ne revient que de manière secondaire
sur les fondements statistiques ou algorithmiques
derrière certaines des techniques évoquées.
Ne pas connaître ces notions n’empêche néanmoins pas de comprendre
le contenu de ce site web. En effet, la facilité d’usage de Python
évite de devoir programmer soi-même un modèle, ce qui rend
possible l’application
de modèles dont on n’est pas expert. La connaissance des modèles sera
plutôt nécessaire dans l’interprétation des résultats.
Cependant, la facilité avec laquelle il est possible de construire des modèles complexes
avec Python
peut laisser apparaître que connaître les spécifités de chaque
modèle est inutile. Il
s’agirait d’une grave erreur : même si l’implémentation de modèles est aisée, il
est nécessaire de bien comprendre la structure des données et leur adéquation
avec les hypothèses d’un modèle.
Reproductibilité
Ce cours donne une place centrale à
la notion de reproductibilité. Cette exigence se traduit de diverses
manières dans cet enseignement, en particulier en insistant sur un
outil indispensable pour favoriser le partage de codes informatiques,
à savoir Git
.
L’ensemble du contenu du site web est reproductible dans des environnements
informatiques divers. Il est bien sûr possible de copier-coller les morceaux
de code présents dans ce site. Cette méthode montrant rapidement ses limites,
le site présente un certain nombre de boutons disponibles pour
ouvrir la page sous un format Jupyter Notebook
sur divers
pages web :
Sur l’ensemble du site web, il est possible de cliquer sur la petite icone pour être redirigé vers le dépôt
Github
associé à ce cours.Un certain nombre de boutons permettent de transformer chaque page web en
Jupyter Notebooks
s’il est nécessaire de visualiser ou exécuter du codePython
.
Voici, par exemple, ces boutons pour le tutoriel numpy
:
Pour les agents de la fonction publique, ou
les élèves des écoles partenaires, il est recommandé
de privilégier le bouton SSPCloud
qui est
une infrastructure cloud moderne, puissante et flexible
développée par l’Insee et accessible à l’url
https://datalab.sspcloud.fr1.
L’ensemble du contenu de ce site s’appuie sur des données
ouvertes, qu’il s’agisse de données françaises (principalement
issues de la plateforme
centralisatrice data.gouv
ou du site
web de l’Insee) ou de données
américaines. Les résultats sont donc reproductibles pour quelqu’un
disposant d’un environnement identique.
Architecture du site web
Ce cours présente des tutoriels et des exercices complets. Chaque page est structurée sous la forme d’un problème concret et présente la démarche générique pour résoudre ce problème général.
Vous pouvez naviguer dans l’architecture du site via la table des matières ou par les liens vers le contenu antérieur ou postérieur à la fin de chaque page. Certaines parties, notamment celle consacrée à la modélisation, proposent des exemples fil-rouge pour illustrer la démarche de manière plus extensive.
Evaluation
Les élèves de l’ENSAE valident le cours grâce à un projet approfondi. Les éléments relatifs à l’évaluation du cours, ainsi qu’une liste des projets déjà effectués, sont disponibles dans la Section Evaluation.
Références
Contenu général
Eléments supplémentaires
Structuration de cette partie
Footnotes
Pour les utilisateurs de cette infrastructure, les notebooks sont également listés, parmi de nombreuses autres ressources de qualité, sur la page
Formation
↩︎
Citation
@book{galiana2023,
author = {Galiana, Lino},
title = {Python Pour La Data Science},
date = {2023},
url = {https://pythonds.linogaliana.fr/},
doi = {10.5281/zenodo.8229676},
langid = {en}
}