Cours de Programmation Python

Python est un langage de programmation orienté objet interprété.

Un programme écrit en Python n'est opérationnel que si l'interpréteur est disponible sur la machine (bien que des solutions de compilation existent). En contrepartie, il peut fonctionner dès lors que l'interpréteur est présent, quel que soit le système d'exploitation de la machine. Sous cet angle, on peut le considérer comme un langage multiplateformes.

La syntaxe de Python est simple et claire, elle respecte les standards du domaine. Python propose les principales fonctionnalités de la programmation (actions conditionnelles, boucles, programmation modulaire), y compris les mécanismes de classes (héritage, surcharge des méthodes, polymorphisme). Python se marie très bien avec un cours d'algorithmie.

La distribution Python intègre un grand nombre de librairies. Elles couvrent un large choix de domaines (bases de données, accès réseaux, multimédia, traitements systèmes, compression, multithreading, ...).

Outre les librairies standards, un grand nombre de paquetages (packages) développés par des contributeurs indépendants donne accès à des fonctionnalités spécialisées performantes. Ici également, la liste est particulièrement longue. Ils nous donnent la possibilité de programmer des applications dans quasiment tous les secteurs de l'informatique. Nous nous intéresserons en particulier à la programmation statistique, au machine learning, au big data et au data science. Python y occupe de plus en plus une place de choix et vient même taquiner R (News KDnuggets, Mai 2015, "R vs Python for Data Science: The Winner is..." ; ou encore DataCamp, Mai 2015, "Choosing R or Python for data analysis? An infographic.")

Ce cours est dispensé en L3 IDS du Département Informatique et Statistique. L’objectif est double. Initier les étudiants à la programmation Python, et les emmener vers le calcul scientifique et la programmation statistique à travers les packages spécialisés.

Je l'approfondis en Master SISE du Département Informatique et Statistique. L'enseignement est alors axé sur la pratique du Machine Learning et le traitement des données complexes (texte - text mining, image - image mining).

Ressources en ligne

Matériel pédagogogique pour le cours - Slides, supports de cours, ouvrages, outils...

Supports

Outils

Le site du projet Python - Le logiciel (setup) et de la documentation sont disponibles en ligne. Le logiciel peut fonctionner sous Windows, MacOS X et Linux. J'ai utilisé la version 3.4.3 de Python pour Windows pour préparer ce cours. Python est libre, complètement gratuit.

Anaconda - Une distribution gratuite pour Python. Elle intègre nativement un grand nombre de packages, notamment ceux consacrés au calcul scientifique et aux statistiques (numpy, scipy, pandas, scikit-learn, etc.). Elle intègre également l'environnement de développement intégré Spyder et le shell IPython. C'est la distribution que nous priviégierons pour le cours.

Slides pour le cours de Programmation Python

Introduction à la programmation Python. Les bases du langage Python. Types de données, affectation, calculs, structures algorithmiques (branchements conditionnels, boucles)

Programmation modulaire sous Python. Procédures et fonctions, découpage des projets en modules.

Collection d'objets sous Python. Création des tuples, listes et dictionnaires. Indices et plages d'indices. Digressions sur les chaînes de caractères.

Les classes sous Python. Caractéristiques d'une classe, champs et méthodes. Instanciation. Mécanismes de classes, héritage, surcharge des méthodes, polymorphisme, variables de classe. Collections d'objets.

Les fichiers sous Python. Création, écriture et lecture. Fichers texte brut, fichiers textes structurés (format json et xml).

Les vecteurs sous Python avec le package NumPy. Création et manipulation des vecteurs. Utilisation des structures et fonctions du module NumPy.

Les matrices sous Python avec le package NumPy. Création et manipulation des matrices. Calcul matriciel (inversion de matrice, calcul des valeurs et vecteurs propres, etc.). Chargement et sauvegarde des données tabulaires.

Statistiques sous Python avec le package SciPy. Mise en oeuvre des techniques statistiques inférentielles (tests d'adéquation, tests de normalité, tests de conformité à un standard, tests de comparaisons de populations, tests pour échantillons appariés, mesures d'association...) et exploratoires (essentiellement la classification automatique, k-means, classification ascendante hiérarchique, affichage du dendrogramme)

Machine learning sous Python avec le package scikit-learn. Démarche data mining, analyse prédictive : construction des modèles, leur évaluation, détermination des paramètres "optimaux" pour les algorithmes d'apprentissage, scoring et ciblage, sélection de variables, validation croisée.

Econométrie sous Python avec le package StatsModels. Econométrie, régression linéaire multiple, estimation des paramètres, moindres carrés ordinaires (mco), tests de significativité, diagnostic, analyse des résidus, détection des points atypiques et influents, prédiction ponctuelle et par intervalle.

Python et Big Data. Programmation Python sous Spark via la librairie PySpark. Installation et configuration de Spark. Accès aux fonctionnalités du package PySpark. Démarche de machine learning (analyse prédictive).

Supports et documentation à lire pour le cours de Programmation Python

Apprendre à programmer avec Python, de Gérard Swinnen. Un cours d'introduction à la programmation Python. Toutes les notions de base y sont. Des chapitres que je n'aborderai pas vous permettront d'aller plus loin (ex. bases de données, applications web, interface graphique, etc.). Cet ouvrage m'a beaucoup aidé dans la préparation de mon cours.

Cours de Python, de Patrick Fuchs et Pierre Poulain. Un autre cours d'introduction à la programmation Python, très bien fait également. Là aussi, je m'en suis beaucoup inspiré.

Python, de Codecademy. Un cours interactif vous permettant de progresser en testant au fur et à mesure votre code. Très bien fait, on peut difficilement s'ennuyer en suivant le cours.

Introduction au langage de programmation Python 3, de Fabien Sincère. Simple, concis, et très didactique. Les notions essentielles de la programmation sont abordées.

python-simple.com, d'un Monsieur que je n'arrive pas à identifier mais qui a fait un excellent travail. Conçu plutôt comme un aide-mémoire, il est clair, très complet et surtout très bien organisé, on se repère très facilement. Des modules standards et non standards (ex. numpy, scipy, matplotlib, etc.) sont décrits.

Introduction à Python pour la programmation scientifique, de David Cassagne. Ce support convient parfaitement à ce que nous faisons. Les bases y sont, et l'auteur effectue des incursions dans des domaines que nous n'aborderons pas, telle que la création des interfaces graphiques. Raison de plus pour le lire attentivement.

Python - Tutorial, du site tutorialspoint. En anglais mais très accessible et très bien organisés. On y retrouve les principales notions abordés dans notre cours, et plus même (ex. traitement des expréssions régulières, programmation cgi, bases de données, etc.).

Introduction à la programmation Python, de Rémi Coulom et Alain Taquet. Très bon cours d'introduction qui correspond à peu près à nos 3 premières séances. De nombreux exemples et exercices .

Python 3.4. documentation. On y trouve la documentation de référence du langage. La liste des packages standards est également disponible. Les descriptions sont exhaustives.

Tutoriels

Cours de Python avec code source. Les slides de ce cours accompagnés des codes sources des programmes qui ont servi à les illustrer.

Installation de la distribution Anaconda. Installation et configuration (charger des versions les plus récentes) de la distribution Anaconda. Description succincte de l'EDI Spyder et de IPython.

Installation et mise à jour des packages pour les irréductibles qui tiennent absolument à fonctionner avec la distribution officielle de Python.

Programmation Python - Statistique, Machine Learning et Data Science

NumPy. Le package de référence pour le calcul scientifique, il est sous-jacent à la très grande majorité des librairies dédiés aux statistiques et au machine learning. Nous nous intéresserons surtout aux vecteurs et matrices, et aux fonctions associées.

SciPy, basé sur NumPy, il propose de nombreuses fonctions statistiques que nous exploiterons.

Python Scientific Lecture Notes. Des supports de cours pour NumPy et SciPy.

Scikit-learn. Un package de machine learning évolué. Il propose les techniques exploratoires évoluées (apprentissage supervisé, régression, clustering, réduction de dimension, sélection de modèles, etc.)

Statsmodels. Un package pour la modélisation statistique. Il inclut des outils de régression, le traitement des séries temporelles, des tests statistiques paramétriques et non-paramétriques.

pandas - Python Data Analysis Library. Un package consacré à l'analyse de données. Il est surtout intéressant pour les fonctions de préparation et de manipulation de données.


Ricco Rakotomalala – Université Lyon 2