Formation d’initiation à Python dans le SSP

Contexte

But de la formation

La formation SSPy propose une introduction à l’utilisation de Python dans le cadre des projet statistiques. Elle est particulièrement pensée pour les agents du service statistique public (SSP), avec des applications faisant intervenir dans la mesure du possible des données issues de la statistique publique française. Néanmoins, ses supports sont complètement open-source (dépôt GitHub) et elle peut donc être ré-utilisée dans n’importe quel cadre de formation à Python.

Python en résumé

Python, créé par le développeur néerlandais Guido van Rossum en 1991, est un langage de programmation dit de haut niveau connu pour sa syntaxe simple et lisible. Les principes fondateurs du langage sont résumés dans un manifeste appelé “Zen de Python. Python est un langage particulièrement versatile, dans la mesure où il dispose d’une riche bibliothèque de packages et fédère des communautés diverses, le rendant idéal pour de nombreux domaines d’application.

Pourquoi se former à Python ?

Malgré déjà plus de 30 années d’existence, Python reste un langage extrêmement dynamique. Plus que cela : non seulement fait-il déjà partie des langages les plus populaires, mais il est également celui qui connaît la plus forte croissance en termes de nombre d’utilisateurs d’année en année.

Une des principales raison de cette forte croissance actuelle est la montée en puissance du domaine de la data science, au sein duquel Python s’est progressivement imposé comme le langage central. De nombreuses librairies phares dans le domaine de la manipulation de données, de la datavisualisation, du machine learning et du déploiement applicatif sont disponibles en Python. Cette adoption croissante dans divers secteurs en fait un choix privilégié pour unifier les pratiques via un langage commun, s’appliquant aussi bien aux métiers de la data science, au développement, qu’à la production informatique et statistique.

Source : josephsalmon.eu

Python vs. R

Python et R sont souvent comparés en raison de leur large utilisation dans le domaine statistique. La différence fondamentale est que Python est un langage généraliste, tandis que R est spécifiquement orienté vers les statistiques. Néanmoins, en pratique, ils sont plutôt complémentaires que concurrents, et le choix entre les deux va souvent dépendre du cas d’usage : par exemple, là où l’écosystème du tidyverse en R n’a sans doute pas d’égal pour la manipulation de données, l’écosystème qui s’est développé en Python autour des techniques de machine learning (en particulier le package scikit-learn) ne possède pas d’équivalent direct dans le monde R. Enfin, les deux langages se ressemblent et la transition d’un langage à l’autre est donc accessible sans nécessiter un ré-apprentissage complet et coûteux.

Modalités de formation

Une “e-formation tutorée”

Cette formation adopte un format d’e-formation tutorée. Elle se déroule sur une période étendue (plusieurs mois), avec un accent mis sur la pédagogie pratique. Un tutorat est également disponible via un Canal Tchap, où les participants peuvent poser leurs questions en continu, ainsi que lors de sessions de visioconférence périodiques.

Hébergée sur le SSP Cloud

La formation est hébergée sur la plateforme SSP Cloud développée par l’Insee. Cette plateforme, dédiée à l’expérimentation autour de la data science et au travail sur des données ouvertes, offre un environnement particulièrement adapté à la formation avec des environnements pré-configurés disposant de toute la puissance de calcul nécessaire à des traitements statistiques courants et innovants.

Programme de la formation

Le programme de la formation est divisé en trois grandes parties :

  • fondamentaux du langage Python : types de base, structures de données, instructions conditionnelles, fonctions, et une introduction à la programmation orientée-objet en Python ;

  • manipulation de données : manipulation de fichiers, travail avec des fichiers CSV et JSON, calcul numérique avec NumPy, traitement des données tabulaires avec Pandas, et une introduction à la visualisation de données en Python ;

  • projets d’application : construction d’un jeu de Puissance 4, prédictions météorologiques à l’aide de données issues d’API, et analyse du recensement de la population.

Chaque chapitre se termine sur une série d’exercices guidés qui visent à mettre en application directe les concepts étudiés dans le chapitre. Les projets d’application sont quant à eux plus exploratoires, et visent à mettre en application les concepts étudiés tout au long de la formation sur des cas d’usage réalistes.

En pratique

Lancer un chapitre

Les différents chapitres peuvent être lancés en un clic depuis l’espace formation du SSP Cloud. Lancer un chapitre revient à lancer un service jupyter-python sur le SSP Cloud, pré-configuré pour la formation et qui va s’ouvrir directement sur le notebook associé au chapitre.

Les notebooks Jupyter

Principe

La formation utilise le format de notebook interactif Jupyter, combinant du texte au format Markdown, du code Python, et du code HTML pour les visualisations et animations. Ce format est particulièrement adapté à la formation et aux phases d’expérimentation. Il permet par ailleurs de publier simplement à la fois les notebooks d’exercices et le site associé au cours.

Utilisation

La base du notebook est le kernel, visible en haut à droite (Python 3 (ipykernel)) et qui se lance automatiquement à l’ouverture d’un notebook. Concrètement, il s’agit d’un interpréteur Python qui tourne en continu en arrière-plan et qui permet d’exécuter dynamiquement des cellules de code Python. Ainsi, les objets créés dans une cellule sont persistés et peuvent être appelés dans une autre cellule, ce qui permet une exécution linéaire du notebook comme un script. Lorsque l’on souhaite nettoyer l’environnement de travail de tous les objets créés lors de la session, on peut le redémarrer (menu Kernel -> Restart Kernel).

Les cellules grisées correspondent aux cellules de code. Pour exécuter le contenu d’une cellule, il suffit de cliquer dessus puis d’utiliser les raccourcis clavier Ctrl + Entrée (exécute la cellule et reste sur la cellule active) ou Shift + Entrée (exécute la cellule et passe à la cellule suivante). Attention, exécuter une cellule revient à exécuter l’ensemble de son contenu. Si l’on souhaite exécuter ligne à ligne, on peut créer des nouvelles cellules (bouton ➕) et y insérer les différentes lignes de code. D’autres éditeurs de code (comme VSCode, disponible sur le SSP Cloud) permettent, comme RStudio par exemple, d’exécuter du code ligne à ligne, mais ils sont moins adaptés à la découverte de Python.

Comment résoudre les erreurs ?

La survenue d’erreurs est tout à fait naturelle et attendue lors de l’apprentissage (et même après !) d’un langage informatique. La résolution de ces erreurs est vraiment l’occasion de comprendre comment fonctionne le langage et de devenir autonome dans sa pratique de celui-ci. Voici une proposition d’étapes à suivre (dans cet ordre) pour résoudre une erreur :

  • 1/ Bien lire les logs, i.e. les sorties renvoyées par Python en cas d’erreur. Souvent, elles sont informatives et peuvent contenir directement la réponse.

  • 2/ Chercher sur internet (de préférence en Anglais et sur Google). Par exemple, donner le nom de l’erreur et une partie informative du message d’erreur renvoyé par Python permet généralement de bien orienter les résultats vers ce que l’on cherche.

  • 3/ Souvent, la recherche amènera vers le forum Stackoverflow, destiné à cet usage. Si l’on ne trouve vraiment pas la réponse à son problème, on peut poster sur Stackoverflow en détaillant bien le problème rencontré de sorte à ce que les utilisateurs du forum puissent le reproduire et trouver une solution.

  • 4/ Les documentations officielles (de Python et des différents packages) sont souvent un peu arides, mais généralement exhaustives. Elles permettent notamment de bien comprendre la manière d’utiliser les différents objets. Par exemple pour les fonctions : ce qu’elles attendent en entrée, les paramètres et leur type, ce qu’elles renvoient en sortie, etc.

Et après la formation ?

Accès aux supports

Tous les supports de formation restent accessibles sur le SSP Cloud après la formation. Le code qui génère les supports est disponible sur GitHub.

Utiliser Python dans des projets statistiques

Pour approfondir sa connaissance du langage Python après cette formation d’introduction, rien de tel que la mise en pratique sur des sujets concrets ! Pour les modalités d’utilisation de Python dans le cadre des projets statistiques, cela va dépendre de l’organisation :

  • pour des projets open-data et inter-administrations, le SSP Cloud est une bonne alternative dans la mesure où les services Python y sont déjà pré-configurés et où un service de stockage de données y est proposé (cf. documentation pour plus de détails) ;

  • pour des projets internes à l’Insee, se référer à la documentation sur l’utilisation de Python en interne ;

  • pour des projets internes à d’autres administrations, se rapprocher de sa DSI pour connaître les modalités d’utilisation recommandées.

Continuer sa formation

La suite “naturelle” de cette formation est le cours de Python pour la data science donné par Lino Galiana à l’ENSAE, également déployé dans l’espace formation du SSP Cloud. Le cours reprend là où cette formation s’arrête, et dresse un panorama très complet des différentes méthodes de data science qui peuvent être mobilisées en Python.

Pour approfondir l’approche plus algorithmique du code, l’Advent of Code propose, chaque mois de Décembre, un exercice par jour sous forme d’énigmes en deux parties, qui impliquent une résolution algorithmique. C’est une très bonne opportunité de développer à la fois ses réflexes algorithmiques et sa connaissance de Python. Attention : si les premiers jours restent accessibles, la difficulté des énigmes devient rapidement assez élevée.

Contact

Deux canaux de contact sont disponibles :

  • pour les demandes pratiques liées à l’exécution de la formation : le Canal Tchap associé à la formation ;

  • pour toute autre demande : innovation@insee.fr