Python intermédiaire
Objectifs pédagogiques
- Acquérir les outils et techniques permettant d’effectuer des traitements sur les données, plus rapidement et plus efficacement
- Connaître les principaux packages d’analyse statistique
Programme détaillé
Cette formation s’adresse à des stagiaires ayant déjà manipulé des données avec le langage Python, désireux d’approfondir leurs connaissances sur ses fonctionnalités.
Chaque chapitre de cette formation permettra aux participants de manipuler les librairies Python sur des cas concrets à partir de travaux pratiques.
Introduction 3h
- Principales caractéristiques du langage Python
- Présentation des objets Python de base
Pandas avancé 5h
- Opérations d’agrégation et de filtrage sur un dataframe Pandas
- Traitement des données manquantes
- Recodage de variables
- Tables multiples : concaténation, jointure
- crosstab()
- Itération d’un DataFrame
- Famille apply et vectorisation : comment appliquer des transformations sur un dataframe ou une serie avec la méthode apply ?
- datetime : comment manipuler les dates et les heures avec le module datetime ?
- Techniques d’optimisation avec Pandas
JSON et API 2h30
- Gestion des formats de données JSON
- Accès à des données en ligne via une API web
Data visualisation avec matplotlib et seaborn 1h30
Public visé
Toute personne souhaitant se perfectionner en Python, notamment : statisticiens, chargés d’études, data analysts, data scientists…
Prérequis
Parmi nos formations au langage Python, cette formation est le niveau 2. Elle requiert une connaissance préalable de Python (maîtrise du contenu de la formation niveau 1 - Python initiation).
Un débutant ou un ancien utilisateur ayant peu de pratique s’orientera donc vers la formation Python Initiation. Si au contraire vous êtes déjà un utilisateur avancé de Python, vous serez peut-être intéressé(e) par nos formations Python Expert.
Approche pédagogique
Calculés à partir de 121 avis recueillis depuis 10/04/2018, lors de 21 sessions de cette formation.
pandas 3.0 : ce qui change pour le code d'analyse de données
Publiée le 21 janvier 2026, la version 3.0 de pandas est la première version majeure depuis la 2.0 d’avril 2023. Elle modifie deux comportements que tout utilisateur rencontre : ce qui se passe quand on modifie une sélection, et le type des colonnes de texte. Une partie du code écrit avant 2026, y compris dans les réponses trouvées en ligne, ne produit donc plus le même résultat.
Copy-on-Write : la fin de l’affectation en chaîne
Jusqu’à la version 2, une sélection pouvait être une vue, qui partage la mémoire avec le tableau d’origine, ou une copie, selon des règles internes difficiles à prévoir. C’était la raison d’être du fameux avertissement SettingWithCopyWarning. Avec pandas 3.0, le mécanisme dit Copy-on-Write devient la règle unique : toute sélection se comporte comme une copie. L’affectation « en chaîne », qui enchaîne un filtre puis une affectation, ne modifie donc plus jamais le tableau d’origine :
import pandas as pd
df = pd.DataFrame({"region": ["Nord", "Sud", "Est"], "montant": [120.0, 80.0, 200.0]})
df[df["montant"] > 100]["montant"] = 0 # sans effet, avec un simple avertissement
df.loc[df["montant"] > 100, "montant"] = 0 # la bonne forme : une seule opération .loc
La première ligne ne provoque pas d’erreur : pandas émet un avertissement (ChainedAssignmentError) et le tableau reste inchangé. Les .copy() ajoutés par précaution pour faire taire l’ancien avertissement deviennent inutiles.
Le texte n’est plus de type object
Les colonnes de texte avaient jusqu’ici le type générique object, hérité de NumPy, capable de contenir n’importe quel objet Python. Elles reçoivent désormais un type dédié, str, qui s’appuie sur la bibliothèque PyArrow lorsqu’elle est installée. En pratique, df.dtypes affiche str, un test comme df["region"].dtype == object n’est plus vrai, et les opérations sur les chaînes sont plus rapides. Pour migrer un code existant, l’équipe de pandas conseille de passer d’abord par la version 2.3 et d’y faire disparaître tous les avertissements.
apply ou vectorisation
Une autre source de lenteur n’a pas changé avec la version 3.0 : appliquer une fonction ligne par ligne avec apply(..., axis=1) revient à exécuter une boucle Python, alors qu’une opération sur des colonnes entières est exécutée en code compilé.
ventes["ca"] = ventes.apply(lambda ligne: ligne["prix"] * ligne["quantite"], axis=1) # boucle Python
ventes["ca"] = ventes["prix"] * ventes["quantite"] # vectorisé
Sur un million de lignes, la seconde écriture est plusieurs centaines de fois plus rapide. apply reste utile quand un calcul ne s’exprime pas en opérations sur des colonnes, et c’est à ces cas qu’il vaut mieux le réserver.
Ces notions prolongent les bases vues en Python initiation ; la formation Python expert — Machine learning engineer s’appuie à son tour sur elles.