Python pour les data scientists et économistes

Ce cours rassemble l’ensemble du contenu du cours Python pour les data scientists et économistes que je donne à l’ENSAE. Quelques éléments supplémentaires sont disponibles dans les slides d’introduction.

Le langage Python est récemment devenu, dans le monde académique comme sur le marché du travail, un outil incontournable de la valorisation de données. La richesse de ce langage 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. 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.

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. Quelques éléments supplémentaires sont disponibles dans les slides d’introduction.

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. Je donne également un cours, plus avancé, sur ce sujet à l’ENSAE avec Romain Avouac: https://ensae-reproductibilite.netlify.app/.

Public cible

Nous partirons de l’hypothèse que les notions de statistiques, d’économétrie et de Machine Learning pour lesquels nous verrons des applications informatiques sont connues. 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 permet, par la même occasion, de donner 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 code Python.

Voici, par exemple, ces boutons pour le tutoriel numpy

Download nbviewer Onyxia
Binder Open In Colab githubdev

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.

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.

Contenu général

  • Introduction: mener un projet statistique avec Python

    Cette introduction propose quelques éléments de révision des concepts de base en Python et présente l’écosystème Python que nous allons découvrir tout au long de ce cours.

  • Partie 1: manipuler des données

    Python s’est imposé comme une alternative très crédible à R dans la manipulation de données. L’écosystème pandas a permis de démocratiser l’utilisation des DataFrames dans Python et faciliter la manipulation de données structurées grâce à la philosophie SQL. Python reste également le langage le plus pratique pour récupérer et manipuler des données moins structurées (webscraping, API). Python tend à devenir, grâce au développement d’API vers d’autres langages (C, Spark, Postgres, ElasticSearch…), le langage “one to rule them all”

  • Partie 2: visualiser les données

    Cette partie présente les outils pour visualiser des données avec Python, qu’il s’agisse de graphiques figés (matplotlib, seaborn, geoplot…) ou de visualisation réactives (plotly, folium, etc.)

  • Partie 3: modéliser

    La facilité à modéliser des processus très diverses a grandement participé au succès de Python. La librairie scikit offre une grande variété de modèles et permet ainsi d’avoir un code fonctionnel en très peu de temps.

  • Partie 4: Natural Language Processing (NLP)

    L’un des grands avantages comparatifs de Python par rapport aux langages concurrents (R notamment) est dans la richesse des librairies de Traitement du Langage Naturel (mieux connu sous son acronyme anglais : NLP pour natural langage processing). Cette partie vise à illustrer la richesse de cet écosystème à partir de quelques exemples littéraires: Dumas, Poe, Shelley, Lovecraft.

  • Partie 5: Introduction aux outils et méthodes à l'état de l'art

    Après avoir abordé les différents champs de la data-science, nous pouvons maintenant introduire à quelques outils et méthodes plus avancés qui correspondent à des aspects plus à la pointe du travail du data-scientist. Cette partie évoquera ainsi les infrastructures modernes de traitement de la donnée, les grands paradigmes concernant les méthodes de travail ou les outils à l’état de l’art pour gagner en efficacité ou améliorer la valorisation d’un projet.

  • Git: un élément essentiel au quotidien

    Une partie annexe au cours pour découvrir Git, un langage devenu indispensable pour les data-scientists et économistes pour stocker et partager des projets Python.