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.")

Je n'assure plus cet enseignement. Ces supports me servent avant tout de tremplin pour les approfondir en Master SISE de notre filière 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, vidéo, audio, ...).

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.

Spyder. L'environnement de développement intégré (EDI) Spyder. Création et édition d'un programme Python (.py).Lancement d'un programme. La console iPython.

Débogage et profiling. Utilisation du débogueur de Spyder. Points d'arrêt. Suivi des valeurs des variables. Profiling du code sous Spyder. Utilisation de l'instruction %timeit. Utilisation du proflier intégré de Spyder.

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 (1). Création, écriture et lecture. Fichers texte brut et CSV.

Les fichiers sous Python (2). Création, écriture et lecture. Fichers 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)

Graphiques sous Python avec le package Matplotlib. Réalisation de graphiques sous Python. Utilisation de la librairie "Matplotlib". Barplot, line plot, histogrammes, scatter plot, courbe de densité. Manipulation des couleurs et des types de points. Définition des axes et des titres. Enchaînement de graphiques dans la même fenêtre visuelle. Ouverture vers la librairie "Seaborn".

Manipulation des données avec le package Pandas. La structure DataFrame de "pandas" pour Python. Chargement de fichier (CSV ou Excel). Description et inspection de la structure DataFrame. Accès aux données : indices, plages d'indices, filtrage par conditions, projection. Statistiques descriptives. Graphiques.

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é.

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'une personne 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

Tutoriels data science pour Python. Mise en oeuvre des algorithmes de machine learning sur des données réelles ou réalistes (analyses factorielles, svm, gradient boosting, régression lasso, régression linéaire multiple, classification automatique, etc.). Exemples de projets de data science menés sous Python (accès à l'API LinkedIn, détection des communautés dans les réseaux sociaux, catégorisation des SMS, etc.). Programmation Big Data (Spark avec PySpark, etc.).

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.

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