ENSAI 2A - Python pour l’ingénieur

ENSAI 2A - Python pour l'ingénieur

_images/logo_Ensai.png

Farah AIT SALAHT <farah.ait-salaht@ensai.fr>

Assistante d’enseignement en Informatique à l’ENSAI

Objectifs du cours

  • Maîtriser les principales librairies de calcul numérique, d’analyse et de visualisation de données
  • Savoir faire rapidement une étude statistique simple
  • Effectuer l’ensemble des traitements appliqués aux données, depuis le traitement des sources de données jusqu’à leur visualisation sans changer de langage
  • Lancer des calculs complexes et analyser des milliards de données grâce aux concepts de machine learning et des principaux algorithmes utilisés par cette discipline

Organisation de l'enseignement

  • 3h de cours

  • 18h de TP : 6 séances de 3h

    • 2 séances d’initiation à la programmation avec Python
    • 4 séances sur des outils de manipulation, de visualisalisation de données et d’apprentissage statistique

Documents mis à disposition

  • Plateforme d’enseignement (Moodle)

  • Polycopiés

    • Le support du cours en amphi
    • énoncés de TP
    • un ensemble de liens et de références

Evaluation

  • 2 Quizz en séance de TP
  • 1 examen final (de 2h) sur machine

Liens et références

Le langage Python

Pourquoi ?

  • Langage facilement lisible, simple à prendre en main ; de plus en plus utilisé en recherche, enseignement, industrie...
  • Sa syntaxe est l’une des plus simples
  • Libre et gratuit : logiciel Open Source (www.opensource.org)
  • Il fonctionne sur toutes les OS (Windows, Linux, Mac)
  • Multi paradigmes, supportant les principaux styles de programmation : impératif, procédural, orienté objet...
  • Possibilité d’écrire des programmes plus courts comparés aux langages de bas niveau

Le langage Python

Pourquoi ?

  • Très polyvalent, grâce à de nombreux modules couvrant des domaines très variés (calcul scientifique, programmation, web, interface graphique,...)
  • Dispose d’une communauté d’utilisateurs très active
  • Il est en pleine expansion, notamment pour le machine learning
  • Utilisé par des acteurs majeurs du monde industriel : NASA, Google, CEA, AirBus, YouTube...
  • Il est mentionné sur les offres d’emploi

Data Scientist

  • R est le langage des chercheurs.
  • Python est préféré par les informaticiens
  • Plus d’options pour traiter les gros jeux de données (> 1 Go)
  • Plus d’options de visualisation
  • Python est très actif. Sa croissance est plus rapide que celle de R.

Plan du cours

  • Environnements de développement Python : Spyder, Canopy ...

  • Programmation sous Python :

    • Syntaxe de base ; Type de données ; Opérateurs et boucles ; Fonctions ; POO ; Lecture et écriture de fichiers
  • Manipulation et visualisation de données avec Numpy, Scipy, Matplotlib, Pandas et SciKit-learn :

    • Accès et manipulation de données avec pandas ; Statistiques descriptives et graphiques ; Modélisation et algorithmes d’apprentissage statistique : SciKit-learn

Environnement de travail

Spyder : un IDE pour Python

  • On fait le choix dans ce cours d’utiliser l’environnement de programmation Spyder pour l’écriture de nos codes python
  • L’IDE comprend trois fenêtres principales : Editeur, Inspecteur d’objets, et la console
_images/spyder4.png

Spyder : un IDE pour Python

  • Console : IPython : shell interactif beaucoup plus avancé

    _images/console.png
  • Éditeur (Script.py) :

    _images/editeur.png
  • Execution du script sur la console :

    _images/run.png

Python / Spyder à l'ENSAI

  • Le système d’exploitation est Windows
  • L’environnement est installé pour vous

Python / Spyder chez vous

  • Vous pouvez retrouver Spyder sur l’une des distributions Python suivantes :

    • Anaconda. Distribution libre qui intègre directement un grand nombre de packages
    • Canopy par Enthought. Commercial mais gratuit pour une utilisation académique
  • Disponible sur les systèmes d’exploitation : Windows, Linux, Mac

  • Son installation est simple (Voir Moodle pour plus de détails)

Version de Python

  • Le cours est construit pour la version 3.5.
  • Les exemples ne marcheront pas tous sur la version 2.7.

Autres Editeurs

Enthought Canopy

Canopy

_images/canopy.png

Scite

Scite

_images/scite.png

PyCharm

La version gratuite de PyCharm contient tout ce qu’il faut. Il détecte quelques erreurs avant l’exécution. Le débuggeur de PyTools (Visual Studio) est très efficace.

_images/pycharm.png

Notebook

  • Mélange de code, de texte, de formules, tableaux et de graphiques.
  • Ils sont onvertibles au format HTML, Latex.
  • Ils sont pratiques pour garder la trace d’une série de petites étapes pour une étude scientifique.
  • Ils ne sont pas pratiques pour écrire de longs programmes.

Notebook example

Jupyter

_images/notsnap.png

Pour le reste utiliser Internet

Quand on ne sait pas, il suffit d’utiliser un moteur de recherche et de chercher :

python + question

La progammation sous Pyhton

Syntaxe de base et règles de Python

  • Commentaire

    _images/c1.png
  • Généralement une instruction par ligne, sans marqueur à la fin Si plusieurs instructions par ligne, les séparer par ,

  • Contraintes de nommage : Les noms de variable (fonction, classe...) doivent respecter des règles syntaxiques : peuvent contenir des lettres, chiffres, des underscore (_) mais doivent commencer par une lettre

  • L’indentation est primordiale :

  • On commence à compter à 0.

Types de données

_images/c2.png

Types de données

_images/c3.png

Types de données

_images/c4.png

chaînes de caractères

_images/c5.png

chaînes de caractères

_images/c6.png

chaînes de caractères

_images/c7.png

Types de données

_images/c8.png

Les listes

_images/c9.png

Les listes

_images/c10.png

Les tuples

_images/c11.png

Les dictionnaires

_images/c12.png

Structures de contrôle

_images/c13.png

Exemple : structures de contrôle

_images/c14.png

Listes en compréhension

_images/c15.png

Listes en compréhension

_images/c16.png

Les Fonctions

_images/fonction.png

Les Fonctions

_images/Exemple_Fonction.png

Fonctions de manipulation de séquences

_images/filter.png

Fonctions de manipulation de séquences

_images/map.png

Fonctions de manipulation

_images/zip.png

mot-clé lambda

_images/lambda.png

Modules et librairies

_images/module1.png

Créer son propre module

_images/module2.png

Modules et librairies

_images/module3.png

Programmation orientée objet / Classes en

  • Classe : concept similaire a celle en Java et en C++
  • Une classe déclare des propriétés communes à un ensemble d’objets
  • Une classe python est composée d’attributs représentant l’état des objets et de méthodes représentant leur comportement
  • On parle d’un objet en tant qu’instance d’une classe
  • En Python une classe est définie de manière analogue aux fonctions, mais en utilisant le mot clé class

Classes en Python

_images/classe.png

Lecture et écriture de fichiers

_images/fichier1.png

Lecture et écriture de fichiers

_images/fichier2.png

Fichiers CSV

_images/fichier3.png

Quizz

  • Quel style utiliser pour représenter des tuples en Python ?

    1. {}
    2. ()
    3. []

Quizz

  • En Python, les chaînes sont considérées comme Mutable, et peuvent être modifiés

    1. Faux
    2. Vrai

Quizz

  • Quel est le résultat du code suivant : [‘a’, ‘b’, ‘c’] + [1, 2, 3]

    1. [‘a’, ‘b’, ‘c’, 1, 2, 3]
    2. TypeError: Cannot convert list(int) to list(str)
    3. [‘a1’, ‘b2’, ‘c3’]
    4. [[‘a’, ‘b’, ‘c’], [1, 2, 3]]

Quizz

  • Le slicing d’une chaîne de caractère est :

    1. Une façon de rendre la chaîne mutable en python
    2. Une façon de réduire la taille des chaînes sur le disque
    3. Une façon de définir une sous-chaîne à partir d’une chaîne

Quizz

  • Lorsque vous créez lambda, quel type est retourné ? Par exemple. retours : type(lambda x: x+1)

    1. <class ’function’>
    2. <class ’type’>
    3. <class ’int’>
    4. <class ’lambda’>

Manipulation et visualisation de données avec Numpy, Scipy, Matplotlib, Pandas et SciKit-learn

  • Python devient progressivement le langage le plus populaire pour l’analyse des données et le calcul scientifique, cependant des modules supplémentaires sont nécessaires. Parmi les modules les plus populaires (indispensables), on cite :

Calcul matriciel

...

Module de référence

calcul scientifique

  • Algèbre linéaire
  • Intégration numériques ; Optimisation
  • Statistiques et autres algorithmes numériques

...

Module de référence

Visualisation

  • De moins en moins de tableaux
  • De plus en plus de graphiques.
  • De plus en plus interactifs.

...

Module de référence

Manipuler les données

  • Importer/Exporter des données en différents formats
  • Fusionner, filter, grouper
  • Echantillonner

...

Module de référence

Machine Learning, Statistiques

  • Statistiques descriptives
  • Clustering
  • Apprentissage statistique

...

Module de référence

Algorithmie

  • Manipuler 100 millions de lignes requiert d’être astucieux
  • Cas récurrents :
    • joindre deux sources de données
    • grouper, trier dans le bon ordre sans perdre du temps
  • Porte d’entrée aux entretiens d’embauche dans les startups

...

Module de référence

Vous

À partir d'un jeu de données

Exemple : issues d’une compétition du site Kaggle : Titanic:Machine learning from Disaster

_images/Titanic2.png

Exemple : Titanic

_images/tit1.png

Exemple : Titanic

_images/tit2.png

Exemple : Titanic

_images/tit3.png

Exemple : Titanic

_images/tit4.png

Exemple : Titanic

_images/tit5.png

Exemple : Titanic

Matrice de confusion

_images/tit6.png

Exemple : Titanic

Arbre de décision

_images/titanic_ad.png

À présent, il ne reste qu'à laisser place à la pratique!!!! À vous de jouer