PLB CONSULTANT : 02. Python, perfectionnement
Organisme
92300 LEVALLOIS PERRETVoir toutes ses formationsAutres organismes proposant cette formation
Durée
Modalités
- Classe virtuelle
- Présentiel
Auto-évaluation en début et en fin de formation.
Prix
Public
Ingénieurs et développeurs.
Pré-requis
Disposer de bonnes connaissances en développement Python.
Objectifs pédagogiques
- Utiliser les techniques avancées du langage Python : Context Manager, métaclasses, closures, fonctions avancées
- Optimiser les performances de vos programmes à l'aide du monitoring et du parallélisme
- Packager et déployer ses artefacts Python
- Exploiter des librairies contribuant au succès du langage : calcul scientifique, Intelligence Artificielle, XML, réseau
Programme détaillé
Rappels importants sur le langage et compléments
Le typage fort en Python
Schéma de fonctionnement de la mémoire d’un programme Python (variables locales, passage par valeur/référence, variables non mutable, etc.)
Rappels sur les différences entre tableaux, listes, dictionnaires, slices, etc.
Les fonctions anonymes (lambda)
Syntaxe d’appels étendus (*args, **kwargs)
Intérêts de déterminer le type d’un objet, d’une méthode, ou d’un module (introspection)
Exemple de synthèse sur les concepts objets en Python (classes, propriétés, méthodes, instances)
Exemple de synthèse sur la syntaxe du langage (variables, boucles, tests, exceptions, …)
Travaux pratiques
Objectif : Valider que les concepts et la syntaxe de Python sont maîtrisés
Description : Quiz ludique (bêtisier des erreurs classiques en Python). Écriture d’une fonction qui extrait une sous liste à partir d’une liste selon une fonction de critères passée en argument. Écriture d’une fonction qui « nettoie » un tableau passé en argument selon un dictionnaire de symboles « interdits » et présents dans un fichier texte.
Packager et déployer votre code Python
En quoi consiste le packaging de code ?
Projet vs bibliothèque
Comment décrire le module packagé (setup.py) ?
Le Python Package Index (PyPI, Métadonnées).
Les outils pour packager ses librairies (disutils, setuptools)
Installer des librairies tierces (pip, easy_install).
Isoler les environnements de différents projets (virtualenv)
Gérer un projet avec pipenv
Créer un wheel distribuable avec setup.cfg
Compiler le code Python en un exécutable avec nuitka
Travaux pratiques
Objectif : Valider que l’environnement de développement est maîtrisé ainsi que le packaging de ses applications
Description : Création d‘un environnement virtuel (virtualenv) pour tester l’installation de modules de versions différentes sur des versions différentes de Python (plusieurs projets sur une même machine sans interférence). Packaging de l’une de nos propres librairies et installation dans l’environnement virtualisé des autres participants.
Manipulations avancées des primitives en Python
Générer du code à la volée : factories puis métaclasses
Décorateurs à plusieurs niveaux
Context manager et décorateur à la fois
Au delà de yield : la méthode send() des générateurs
Monkey paching et autres injections de code
Introspection du code
Travaux pratiques
Objectif : Savoir mettre en œuvre l’introspection et les factories
Description : Mise en œuvre de l’introspection (appel de fonction avec arguments dans le « désordre »)
Utilisation d’une classe différente selon le processus de connexion (login/password ou annuaire par exemple) avec les usines de classe (Factories)
Performances et parallélisation
Programmation non blocante avec les threads
Le GIL et les limites des threads
Exploiter plusieurs coeurs avec le multiprocessing
I/O asynchrone avec asyncio
Les outils pour lire l’activité (Timeit, cProfile)
Calcul distribué avec la librairie Celery
Les faiblesses du multithreading
Travaux pratiques
Objectifs : Savoir manipuler les threads en Python pour gagner en performances
Description : Mise en œuvre de l’algorithme Map Reduce avec Celery. Observations des appels et du temps passé dans les différentes fonctions pour diagnostiquer où se situe le goulot d’étranglement.
Manipulations avancées des données
Rappels sur les formats de données structurées : CSV, flux XML et JSON
Manipulation des données issues de ces fichiers par des structures Python adaptées
Le parseur XML ElementTree
Fonctions d‘accès et de download de données en ligne
A quoi sert un ORM (Object-relational Mapper) ?
Synchronisation des objets Python avec une base SQL (ORM sqlAlchemy)
Travaux pratiques
Objectif : Savoir manipuler des flux XML ou JSON
Description : Capture de séries financières (indices de marché et cours de bourse) à partir d'un fichier CSV représentant des données issues de data.gouv.fr, on extrait une statistique (décrite en XML) et on l’affiche dans un bar graphe (utilisation de la libraire PySpark). Cet atelier permet d’appréhender la puissance du moteur Spark combiné à la simplicité de Python pour l’analyse de données.
La représentation graphique de données en Python
Introduction aux bases de la visualisation de données
Focalisation sur la génération de graphes grâce à la librairie Matplotlib : démonstration de l’application de graphes Matplotlib à la visualisation de problèmes concrets
Travaux pratiques
Objectif : Savoir utiliser la bibliothèque MatplotLib
Description : Poursuite de l’atelier précédent en générant des visualisations graphiques illustrant les analyses de données réalisées
Présentation des grandes librairies Python
En quoi consiste l’analyse de données ?
Introduction au concept de Dataframe
Manipuler et analyser les données avec Pandas
Analyser les données avec NumPy et SciPy
Fonctions de manipulation et de calcul matriciel (Numpy)
Fonctions de Statistiques Descriptives (SciPy)
Fonctions de comparaison de populations, mesures d’association, etc. (SciPy)
Fonctions de classification automatique (SciPy) : k-means
Introduction aux concepts et au vocabulaire de l’IA (apprentissage supervisé/non supervisé)
Intelligence Artificielle et algorithmes d'apprentissage avec Scikit-Learn
Tracer et visualiser les données avec Matplotlib
Créer un serveur internet WEB, FTP, etc. avec Twisted (aperçu)
Dialoguer avec tout matériel compatible SNMP avec PySNMP (aperçu)
Travaux pratiques
Objectifs : Comprendre le champ fonctionnel de chaque librairie et leurs dépendances ou complémentarités. Savoir mettre en œuvre NumPy et SciPy pour le calcul scientifique et l’analyse de données.
Description : Quizz sur les bibliothèques (quelles bibliothèques utiliser pour quel traitement formulé sous la forme d’un besoin métier ?). Mise en œuvre de NumPy et SciPy dans le contexte de l’analyse financière (Collecte de données, intégration, nettoyage, calcul, analyse). Visualisation avec Matplotlib.