Reprise des bases de Python + Petite exploration de Seaborn

Tags :
  • MON
  • 2023-2024
  • temps 2
  • python
  • piton
  • pyton
  • Seaborn
  • visualisation
  • plot
Auteurs :
  • Benoit BEGUIER

Le but de ce MON est de reprendre les bases d'algorithmique en Python, puis de s'initier au package Seaborn permettant de plot des jolis graphiques

Niveau : Intermédiaire Prérequis :

  • Bases de Python

Sommaire

  1. Introduction
  2. Remise au niveau intermédiaire sur Python
  3. Découverte de la bibliothèque Seaborn
  4. Mise en pratique en reprenant l'exemple du MON 1.1

Introduction

Pour la réalisation de ce cours, je me réfèrerais aux sources listées ci-dessous :

Remise au niveau intermédiaire sur Python

Exercices de décrassage (2 heures)

J'ai débuté ce MON en effectuant un grand nombre d'exercices Python sur le site W3 Schools, cité dans mes références. Ce site propose un peu moins de 5 exercices sur les différents aspect essentiels du langage, tels que :

Ces exercices représentaient selon moi le meilleur moyen de me remettre dans la syntaxe Python. Bien que Python soit assez intutif, certains mots-clés m'échappaient (dir, break, continue, ...). Les exercices sont d'abord très simples ce qui permet de se refaire la main, puis ils se corsent (très légèrement) pour aborder quelques détails, commandes et méthodes. J'ai aussi consulté en profondeur la documentation sur les listes car j'utilise fréquemment ce type d'objets. Je recommande à tous de faire ces exercices. Ils m'ont pris deux heures, car j'ai systématiquement survolé la documentation des types et des commandes que je maîtrisais mal.

W3

Échauffement (2 heures 30)

J'ai ensuite effectué le cours de Python de M. Brucker accessible ici. Je me suis attardé sur les parties Variables, Fonctions, Listes et Notebook. Je retiens notamment la partie sur les listes en compréhension (dont la documentation est disponible ici), les arrays (dont la documentation est disponible ici), les Notebook et la partie Pour aller plus loin. J'ai effectué l'ensemble des exercices proposés par M. Brucker sur les pages que j'ai consulté, afin de reprendre rapidement la main sur tous les types.

J'ai ensuite suivi le tutoriel Python (encore recommandé par Brucker) qui est disponible ici. Celui-ci étant très long, j'ai sélectionné uniquement les parties qui m'intéressaient :

Enfin, j'ai lu la documentation du mot-clé case accessible ici car je n'étais plus certain de son utilisation.

Découverte de la bibliothèque Seaborn

Introduction

Suite aux recommandations d'Olivier Bastide, qui, après avoir suivi ses semaines de filières métier en ADAD, m'a chanté les louanges de la bibliothèque Seaborn, je décide de lui faire confiance et d'apprendre à utiliser cette bibliothèque. Basée sur matplotlib, cette bibliothèque bénéficie donc de l'intégration sur tous les environnements supportés par matplotlib, ce qui est très pratique. Seaborn est plutôt orientée statistique et analyse des données, ce qui me convient parfaitement pour ce que je veux en faire. Il ne suffit que d'un

pip install seaborn

pour installer la bibliothèque.

Seaborn

Analyse de la documentation fournie sur le site Seaborn (2 heures)

J'ai d'abord fait un tour sur la page Introduction de Seaborn. Une rapide présentation des possibilités permises par la bibliothèque sont montrées et on a une première approche avec les méthodes de la bibliothèque.

L'ensemble des exemples fournis par Seaborn utilisent des datasets pré-existants. Il est possible de les consulter avec la commande

sns.get_dataset_names()

['anagrams',
 'anscombe',
 'attention',
 'brain_networks',
 'car_crashes',
 'diamonds',
 'dots',
 'dowjones',
 'exercise',
 'flights',
 'fmri',
 'geyser',
 'glue',
 'healthexp',
 'iris',
 'mpg',
 'penguins',
 'planets',
 'seaice',
 'taxis',
 'tips',
 'titanic']

Je m'attarde ensuite sur la partie Visualizing distributions of data car c'est ce que j'aimerais effectuer dans la suite de ce MON. J'apprends d'abord à paramétrer l'affichage des histogrammes, dans les cas simples et dans les cas de données multiples. Seaborn permet par exemple de sélectionner très facilement le mode d'affichage de données multiples sur un même graphique. En jouant sur deux paramètres, on peut alors empiler (stack) les barres des données au lieu de les superposer, les faire afficher en step, ou encore les afficher côte-à-côte.

histo

Nous abordons aussi le cas des distributions à deux variables. J'ai trouvé cette partie très intéressante car elle lie statistiques et programmation. J'ai légèrement survolé la partie sur les distributions marginales, qui ne m'intéressent pas spécialement dans mon étude.

Je retiens les fonctions suivantes :

Dédicace à la fonction pairplot() qui permet, lorsque l'on étudie un grand dataset et que l'on ne connaît pas les relations entre chaque variable, d'afficher la distribution univariée de chaque variable ainsi que leurs relations par pair.

penguins = sns.load_dataset("penguins")
sns.pairplot(penguins)

Output : pairplot

Vidéos Youtube (1 heure)

J'ai ensuite décidé de regarder plusieurs vidéos Youtube sur la bibliothèque Seaborn, car en général il y a souvent des applications ou des pratiques que je n'aurais pas soupconnées en lisant uniquement la documentation.

J'ai d'abord regardé la vidéo de Gaelim Holland : How to Visualize Data in Python Using Seaborn | Seaborn Tutorial.. Honnêtement je ne la recommande pas, car le contenu n'est pas très différent de la documentation, et il commet quelques imprécisions malvenues (par exemple dans import seaborn as sb, il affirme que sb est une variable alors que c'est un alias).

Je retiens cependant la ligne de commande

data.head()

qui permet d'afficher les premières lignes du dataset, ce qui est très pratique en particulier dans les Notebooks.

J'ai ensuite regardé la vidéo Seaborn Tutorial : Seaborn Full Course de Derek Banas. Claire et directe, elle permet de revoir toutes les possibilités offertes par Seaborn. Bonus : son notebook qu'il rend disponible dans la description.

Mise en pratique en reprenant l'exemple du MON 1.1

Dans mon MON 1.1, j'avais utilisé le langage R pour analyser les données issues du Grand Prix du Japon et afficher un graphique montrant la position de deux pilotes en foction du tour de la course.

MON

Je souhaite cette fois améliorer le graphique obtenu et le temps machine grâce à Seaborn. Je vais pour ce MON me baser sur les données du dernier Grand Prix de la saison qui s'est déroulé à Abu Dhabi le 26/11/2023. J'ai récupéré les données sur le site Pitwall et je crée un fichier .csv avec les données.

J'ai réalisé tout ce travail dans un Notebook que vous pourrez trouver ci-dessous.

Je suis satisfait de la finalité de mon MON et de la bibliothèque Seaborn. Je n'ai fait ici qu'effleurer les possibilités qu'elle offre car je n'ai pas fait d'études statistiques, mais il en résulte une très grande facilité d'utilisation.

final