data scientiste big data

Le langage Python s’impose aujourd’hui comme un socle technologique pour le développement de grands projets logiciels. Vous mettrez en œuvre, dans cette formation, les techniques avancées du langage Python ainsi que ses principales librairies afin de pouvoir répondre aux exigences qualité de ces projets.

Description

Durée : 28 heures
Modalités techniques d’évaluation : Évaluation des connaissances par QCM, évaluation des compétences au travers de travaux pratiques et de cas d’études. Contrôle de l’acquisition des connaissances et des compétences pendant la formation par le formateur.
Moyens pédagogiques : Apports théoriques réalisés en classe et complétés par de nombreux travaux pratiques permettent aux participants de disposer d’une expérience concrète. A l’issue des sessions magistrales, réalisation de cas d’études tutorés.

Objectifs pédagogiques

À l’issue de la formation, le participant sera en mesure de :

  • Implémenter de manière rigoureuse des Design Patterns reconnus
  • 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

Méthodes pédagogiques

Apports théoriques illustrés par des exemples de code puis consolidés par la réalisation d’un mini-projet (70% de travaux pratiques).
PROGRAMME DE FORMATION

Rappels importants sur le langage

  • Affectation par référence et types de données modifiables, non modifiables (mutable).
  • Passage d’arguments, valeurs par défaut et variables locales.
  • Variables de classe et d’instances.
  • Les slices et structures de données avancées.
  • L’introspection.
  • Eléments avancés des structures de contrôle : la clause else des instructions for, while, try/except.

Travaux pratiques
Optimisation : intersection de listes et calcul de complexité d’algorithmes.

Fonctions avancées

  • Utilisation avancée de décorateurs (de la génération à la consommation, pipeline de consommateurs).
  • Les décorateurs et Design Patterns.
  • Fermeture/closure.

Travaux pratiques
Chaînage de consommateurs de données. Abonnement à des événements via les décorateurs.

Programmation Orientée Objet avancée

  • Les propriétés (property).
  • Les itérateurs.
  • L’héritage multiple et ses travers.
  • Les Context Managers.
  • Les classes et méthodes abstraites (ABC).
  • Les métaclasses.

Travaux pratiques
Implémenter une métaclasse pour créer des classes de type singleton.

Déploiement et qualité

  • Installer des librairies tierces (pip, easy_install).
  • Le Python Package Index (PyPI).
  • Packager ses librairies (distutils, setuptools).
  • Déployer un environnement autonome (virtualenv et buildout).

Travaux pratiques
Packager une librairie et la déposer sur PypI.

Le parallélisme : optimiser les performances de vos programmes

  • Profilez vos programmes avec Timeit et cProfile.
  • Parallélisation : évitez le multithreading et foncez avec le multiprocessing.
  • Calcul distribué avec la librairie Celery.

Travaux pratiques
Répartition et consolidation (Map Reduce) de calculs avec Celery.

Les librairies contribuant au succès du langage

  • Calcul scientifique et statistiques avec Numpy, Scipy, Matplotlib et Pandas.
  • Intelligence Artificielle et algorithmes d’apprentissage avec Scikit-Learn.
  • Recherche d’informations dans des fichiers XML avec ElementTree.
  • Réseau : relay tcp avec Twisted et supervision SNMP avec PySNMP.

Travaux pratiques
Extraction d’informations dans des fichiers de log XML, filtres et statistiques sur les données collectées puis représentation à l’aide de graphiques des tendances des informations.