Introduction

Avant de plonger dans les arcanes de la data science, cette partie d’introduction propose des éléments de configuration et des révisions pour mettre le pied à l’étrier.

Chaque chapitre peut être consulté depuis ce site web ou est accessible sous un format éditable Jupyter Notebook dans différents environnements. 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.

Pourquoi faire du Python pour travailler sur des données ?

Python, par sa grande flexibilité, est devenu un langage incontournable dans le domaine de la data science. 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 constant. Historiquement, R étant 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 et développé par RStudio 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.

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:

  • reticulate est un package R qui permet d’exécuter des commandes Python, récupérer le résultat de celles-ci dans R, exécuter des commandes R sur l’objet converti, et éventuellement renvoyer le résultat dans un objet Python équivalent. Techniquement, reticulate crée une équivalence entre des objets Python et R et permet aux deux langages de s’échanger ces objets sans risque de les altérer ;
  • snakemake propose une approche plus générique, celles des pipelines. L’idée est de structurer un programme sous formes de maillons dépendants les uns des autres mais pouvant être exécutés dans des langages différents. snakemake est l’un des nombreux outils qui existent dans le domaine. Celui-ci est présenté dans la partie relative aux outils modernes de la data-science. Il s’agit de celui qui est plus centré sur Python mais il en existe d’autres (les plus flexibles étant probablement Apache Airflow et Argo CD).
  • quarto est un outil pour intégrer ensemble des éléments de texte et des blocs de code à exécuter afin de produire des sorties valorisées dans le document. Quarto vise à corriger l’un des défauts majeurs de R Markdown, à savoir qu’il était nécessaire d’installer R et un certain nombre de packages pour créer des publications reproductibles, même lorsque ces dernières n’utilisaient pas ce langage. Avec Quarto, ceci n’est plus nécessaire. Les utilisateurs de Python bénéficient ainsi des apports de presque une décennie de développement et d’usage intensif de R Markdown par la communauté.

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.netlify.app/. 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.

Structuration de cette partie

  • Configuration de Python

    L’environnement que propose Python pour la data-science est très riche. Afin de bénéficier du meilleur environnement pour tirer parti du langage, ce chapitre propose quelques conseils pour installer un environnement fonctionnel. Les environnements virtuels ou conda, qui permettent d’avoir une installation de Python autosuffisante et facilement gérer les évolutions de version, sont devenus incontournables au cours de la dernière décennie. L’évolution récente du monde de la donnée consiste à délaisser les installations sur postes personnels pour privilégier l’usage de Python via des architectures cloud.

  • L'environnement Python pour la data-science

    Python propose un écosystème très riche pour la data-science. Ce chapitre fait un tour d’horizon de celui-ci en présentant les principaux packages qui seront présentés dans ce cours.

  • Comment aborder un jeu de données

    Quelques éléments pour adopter une démarche scientifique et éthique face à un jeu de données.

  • Bonne pratique de Python

    Les normes communautaires du monde de l’open-source ont permis une harmonisation de la structure des projets Python et des scripts. Ce chapitre évoque quelques unes de ces conventions. Pour aller plus loin, un cours en 3e année d’ENSAE est disponible sur un autre site

  • Rappel de ce que vous savez déjà mais avez peut-être oublié

    Rappels d’éléments essentiels en Python: les règles de syntaxes, les classes, les méthodes, etc.

  • Modules, tests, boucles, fonctions

    Les fonctions permettent de généraliser des instructions. Il s’agit ainsi d’un outil privilégié pour automatiser des tâches répétitives ou réduire la complexité d’une chaine de traitement. Elles sont donc à utiliser sans modération. Ce chapitre vise à quelques rappels sur le sujet.

  • Les classes en Python

    La programmation orientée objet (POO) est l’un des atouts de Python. Elle permet d’adapter des instructions à un type particulier d’objet. En apparence plus complexe que la programmation fonctionnelle évoquée précédemment, elle permet néanmoins de bien rélféchir à la structure des objets utilisés. Ce chapitre vise à quelques rappels sur la programmation orientée objet.


  1. Pour les utilisateurs de cette infrastructure, les notebooks sont également listés, parmi de nombreuses autres ressources de qualité, sur la page Formation ↩︎