Python au CASD

Equipe Datascience

Goals

  • Pourquoi utiliser Python ?
  • Les concepts de base en Python
  • Comment utiliser Python au CASD ?
  • La syntaxe de base en Python
  • Python pour la datascience

Pourquoi utiliser Python ?

Python est un langage généraliste (General Purpose Language) initié en février 1991. Python est devenu populaire dans les années 2010, porté par le développement de la data science.

R est un langage spécifique (Domain Specific Language) dédié à l'analyse et à la visualisation de données.

Les principaux avantages de Python :

  • Syntaxe simple et lisible
  • Multi-plateforme et polyvalent
  • Interopérable avec d'autres langages
  • Ecosystème vaste et mature
  • Prend en charge plusieurs paradigmes (ex : code procédural, orienté objet, fonctionnel)

Quelques désavantages

  • Langage interprété : Plus lent que les langages compilés (ex : C, Go)
  • Typage dynamique : L'interpréteur Python infère automatiquement le type des variables ⏩ Exemple de code
  • Pas fortement typé : comme Java ⏩ Exemple de code
  • Verrou global de l'interpreteur (Global Interpreter Lock) : les opérations ne peuvent pas tourner en parallèle sur plusieurs coeurs

Le typage des variables est dynamique en Python


                    x = 5
                    print(f"type of x is: {type(x)}")
                    # type of x is int
                    x = "hello"
                    print(f"type of x is: {type(x)}")
                    # type of x is str
                
⏩ Go back

Python est faiblement typé


                    # Python contrôle automatiquement le type des variables
                    1 + "2"      # ❌ TypeError: unsupported operand types (int + str)
                    # mais propose de la flexibilité entre certains types
                    1 + True     # ✅ 2        (True → 1)
                    3 * "a"      # ✅ "aaa"

                
⏩ Revenir en arrière

Les fondamentaux d'un projet Python

  • Interpréteur Python : Le moteur d'exécution du code Python.
  • Environnement virtuel : Un environnement de développement isolé, par exemple pour éviter les conflits de versions des packages entre différents projets.
  • Gestionnaire de packages : L'outil permettant de gérer l'installation, la mise à jour, la suppression de packages ou de librairies tierces.
  • Environnement de développement intégré (IDE) : Un logiciel qui propose des outils facilitant la programmation : éditeur de code, analyse/cotrôle du code en temps réel (linting), mode de débogage, ... (ex : Rstudio, VSCode)
  • Structure d'un projet & fichier de configuration : Des fichiers comme `pyproject.toml` contiennent des métadonnées relatives à l'auteur, aux dépences, aux licences, etc.

Un interpreteur Python, c'est :

  • Un compilateur : Traduit les fichiers source .py en fichiers bytecodes .pyc
  • Une machine virtuelle basée sur une pile : Exécute les instructions en bytecode .pyc pour permettre au code Python de produire le même résultat sur différents systèmes d'exploitation (ex : Windows, Linux)
  • Des fonctions et types intégrés : Implémentation de types primitifs (ex : int, str, etc.) et de fonctions de base (ex : print, len, etc.)
  • Un runtime : Réalise l'interface entre la machine virtuelle et le système d'exploitation (mémoire, fichier, socket, etc.)
  • Un Garbage Collector : Nettoyage récurrent de l'environnement pour librérer de la mémoire
  • Des bibliothèques de base : Modules présents par défaut, comme `os`, `math`, `statistics`

Un environnement virtuel Python est un espace de travail isolé qui contient ses propres interpreteur Python et dépendances.

  • Isolation : Assurer l'independance des dépendances de chaque projet pour éviter les conflits de versions.
  • Reproductibilité : Capacité à reproduire exactement les mêmes opérations dans un nouvel environnement, notamment en figeant les versions des packages (pip freeze).
  • Envionnement propre : Eviter de polluer l'environnement Python avec des packages spécifiques à certains projets.
  • Versions de Python multiples : Différents projets peuvent utiliser des versions de Python différentes (Ex : 3.9 vs 3.12).
illustration venv

La gestion des librairies en Python fait référence au système qui gère :

  • L'installation, la mise à jour, la suppression de librairies tierces (ou packages)
  • La gestion des dépendances entre packages
  • La compatibilité des versions
  • Outils populaires : pip, conda, poetry

Les IDE Python :

Un IDE est un logiciel qui fournit un ensemble d'outils pour écrire, déboguer, tester, et déployer du code plus efficacement, en une seule interface.

  • PyCharm : Excellent support d'analyse, de débogage du code, etc. Consomme beaucoup de mémoire.
  • Visual Studio Code (VS Code) : Beaucoup plus léger, mais nécessite l'installation de nombreux plugins pour faciliter les développements.
  • JupyterLab : Adapté pour l'utilisation de Notebooks, idéal pour l'analyse de données, le machine learning, etc.
  • Spyder : Interface similaire à Matlab, dédiée au calcul scientifique.

Structure d'un projet & fichier de configuration

Python au CASD

  • Interpreteur Python : conda
  • Environnement Virtuel : conda
  • Gestionnaire de packages : pip
  • Environnement de développement intégré (IDE) : VSCode
  • Structure d'un projet & fichier de configuration : Bonnes pratiques au CASD

CASD VS le reste du monde :

Procédure pour créer un projet Python au CASD


                     
                

Packages Python :

Les bibliothèques de base sont chargées par défaut dans l'interpreteur Python !

 pip install sys

Cette commande va échouer, car sys est une bibliothèque de base. Elle est déjà présente dans l'interpréteur Python. On peut l'utiliser sans prérequis.

 import sys

Librairies tierces :

Les utilisateurs doivent activer le serveur CASD PyPi avant de lancer la commande suivante :

pip install pandas

Le serveur CASD PyPi ne dispose pas de tous les packages disponibles dans l'index officiel PyPi. Vous pouvez tester la disponibilité d'un package avec les commandes suivantes :

pip install package-name --dry-run
ou
pip index versions package-name

Si vous avez besoin d'un package qui n'est pas disponible, contactez service@casd.eu

VSCode au CASD

Par defaut, VSCode ne dispose pas des plugins nécesaires pour coder en Python .

Le CASD fournit les plugins VSCode suivants pour Python :

  • Emplacement des plugins : S:\VsCode
  • Plugins pour Python : S:\VsCode\Python\*
  • Plugins pour markdown : S:\VsCode\MarkDown\*
  • Plugins pour Git : S:\VsCode\Git\*

La syntaxe de base en Python

  • Indentation (important !)
  • Types de variables et de données
  • Conditions
  • Boucles
  • Fonctions
  • Structures de données courantes
  • Gestion des exceptions
  • Imports

Aller au TP 2 : basic_python_syntax

Python pour la datascience

Python offre des milliers de packages pour faire de la datascience. Voici une liste de packages très populaires :

  • Manipulation de données : pyspark, pandas, pyarrow, dask, polars
  • Données geospatiales : sedona, geopandas, shapely, pyproj, rasterio, kepler.gl
  • Statistiques et mathématiques : ydata-profiling, statsmodels, sympy, numpy, scikit-misc
  • Machine learning : scikit-learn, xgboost, lightgbm, catboost
  • Deep learning : tensorflow, torch, keras, fastai
  • Time series & prevision : prophet, tsfresh, darts, sktime
  • Natural Language Processing (NLP) : nltk, spacy, transformers, gensim, textblob,