Introduction
Pandas, bibliothèque open-source pour Python, révolutionne l'analyse de données depuis 2008. Inspirée des structures de R et NumPy, elle excelle dans la manipulation de données tabulaires, comme des tableurs Excel géants mais programmables. En 2026, avec l'essor de l'IA et du big data, Pandas reste essentiel : 80% des data scientists l'utilisent quotidiennement selon Stack Overflow.
Pourquoi l'apprendre ? Imaginez analyser des ventes e-commerce : Pandas transforme des CSV chaotiques en insights actionnables en minutes. Ce tutoriel beginner, 100% conceptuel, pose les fondations théoriques sans code. Vous comprendrez Series et DataFrames, les opérations clés, et adopterez des pratiques pro. Résultat : passez de novice à confiant en data manipulation, prêt pour des projets réels comme nettoyer des datasets Kaggle ou préparer des modèles ML.
Prérequis
- Connaissances de base en Python (variables, listes, dictionnaires).
- Notions élémentaires de données tabulaires (lignes, colonnes, comme un tableur).
- Pas d'expérience Pandas requise : tout est expliqué depuis zéro.
- Temps estimé : 15-20 minutes de lecture active.
Les structures fondamentales : Series et DataFrames
Pandas repose sur deux piliers : Series et DataFrames.
Une Series est une liste unidimensionnelle indexée, comme un dictionnaire ordonné. Analogie : une colonne Excel avec en-têtes. Exemple concret : salaires d'employés {'Alice': 50000, 'Bob': 60000}. L'index (noms) permet un accès rapide, contrairement aux listes Python pures.
Un DataFrame étend cela en tableau 2D : lignes (observations) et colonnes (variables). Analogie : feuille Excel complète. Exemple : dataset employés avec colonnes 'Nom', 'Salaire', 'Département'. Chaque colonne est une Series ; les lignes ont un index partagé.
Indexation : clé unique (entiers, strings, dates). Différence cruciale : accès par label (df['colonne']) vs position (df.iloc[0]). Cela évite les erreurs courantes en data analysis.
Opérations de sélection et filtrage
Sélection : extraire sous-ensembles.
- Colonnes : par nom (df['salaire']) ou liste (df[['nom', 'salaire']] → nouveau DataFrame).
- Lignes : par index (df.loc['Alice']) ou position (df.iloc[0:3]). Exemple : top 5 salariés.
Filtrage (boolean indexing) : conditions logiques. Analogie : filtre Excel. Exemple : df[df['salaire'] > 55000] garde lignes > 55000€. Chaînable : df[(df['dept'] == 'IT') & (df['salaire'] > 50000)]. Opérateurs : &, |, ~ (ET, OU, NON).
Query : syntaxe SQL-like pour lisibilité : df.query('salaire > 55000 and dept == "IT"'). Idéal pour datasets complexes comme logs web.
Manipulation et transformation des données
Ajout/suppression : colonnes dynamiques. df['bonus'] = df['salaire'] * 0.1 (vectorisé, ultra-rapide). Supprimer : del df['colonne'] ou df.drop().
GroupBy : agrégation par groupes, comme pivot Excel. Étapes : splitter (par 'département'), apply (moyenne salaires), combine. Exemple : df.groupby('dept')['salaire'].mean() → dict { 'IT': 65000, 'RH': 45000 }.
Merge/Join : fusion datasets. Types : inner (intersection), left (tout gauche), etc. Analogie : VLOOKUP avancé. Exemple : merger employés + départements pour dataset enrichi.
Apply/Map : fonctions custom. map() sur Series (élément par élément), apply() sur axes (lignes/colonnes). Évitez boucle for : vectorisation Pandas = 100x plus vite.
Gestion des données manquantes et nettoyage
Datasets réels = 20-30% manquants. Pandas détecte NaN/infinis.
Détection : df.isnull().sum() compte par colonne.
Traitement :
- Drop : df.dropna() (lignes) ou subset=['col'].
- Fill : df.fillna(0) ou moyenne (df['salaire'].fillna(df['salaire'].mean())). Stratégie : forward-fill pour séries temporelles (ex: prix actions).
Duplication : df.duplicated().drop_duplicates().
Types : df.dtypes ; conversion astype('int') ou pd.to_datetime(). Exemple : strings '2026-01-01' → dates pour analyses temporelles.
Checkliste nettoyage : 1. Inspecter shapes/info. 2. Gérer NaN. 3. Types. 4. Duplicatas. Transforme chaos en or.
Bonnes pratiques essentielles
- Toujours indexer intelligemment : utilisez dates/noms comme index pour jointures rapides (set_index()). Évite confusion label/position.
- Vectorisez tout : préférez opérations Pandas (df['col'] + 10) à boucles. Gain : 10-100x vitesse sur 1M lignes.
- Chaîner méthodes (method chaining) : df.query('...').groupby(...).agg(...) pour pipelines lisibles, moins d'erreurs.
- Copier avant modif : df.copy(deep=True) évite SettingWithCopyWarning (mutations inattendues).
- Profiler mémoire : df.info(memory_usage='deep') ; astype('category') pour facteurs (ex: genres) réduit RAM de 90%.
Erreurs courantes à éviter
- SettingWithCopyWarning : chaines comme df[col][row] = val modifie vue, pas copie. Solution : .loc[:] ou .copy().
- Ignorer index : reset_index() après groupby pour éviter index perdus en exports CSV.
- Mémoire explosive : charger gros fichiers sans chunksize ou dtype précoces. Utilisez low_memory=False judicieusement.
- Filtrage booléen malformé : df[col == val] sans parenthèses multiples → erreur. Toujours (cond1) & (cond2).
Pour aller plus loin
Maîtrisez Pandas ? Passez à la pratique :
- Documentation officielle : pandas.pydata.org.
- Datasets : Kaggle (Titanic pour groupby).
- Livres : "Python for Data Analysis" (Wes McKinney, créateur Pandas).
- Outils complémentaires : Matplotlib/Seaborn pour viz, Scikit-learn pour ML.
Découvrez nos formations Learni sur Data Science : ateliers pratiques Pandas + PyTorch en 2026.