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 packageR
qui permet d’exécuter des commandesPython
, récupérer le résultat de celles-ci dansR
, exécuter des commandesR
sur l’objet converti, et éventuellement renvoyer le résultat dans un objetPython
équivalent. Techniquement,reticulate
crée une équivalence entre des objetsPython
etR
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é surPython
mais il en existe d’autres (les plus flexibles étant probablementApache Airflow
etArgo 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 deR Markdown
, à savoir qu’il était nécessaire d’installerR
et un certain nombre de packages pour créer des publications reproductibles, même lorsque ces dernières n’utilisaient pas ce langage. AvecQuarto
, ceci n’est plus nécessaire. Les utilisateurs dePython
bénéficient ainsi des apports de presque une décennie de développement et d’usage intensif deR 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
-
Quelques rappels sur les principes de base de Python
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 chaîne de traitement. Elles sont donc à utiliser sans modération. Ce chapitre présente 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.
-
Pour les utilisateurs de cette infrastructure, les notebooks sont également listés, parmi de nombreuses autres ressources de qualité, sur la page
Formation
↩︎