Analyse de Données avec Python

Classe B3 ASO 2025-2026

Module 5

Importer et Exporter des Fichiers avec Pandas

Maîtriser la lecture et la sauvegarde de données depuis et vers les formats de fichiers les plus courants.

Un data analyst passe une grande partie de son temps à faire le pont entre des données brutes stockées dans des fichiers et son environnement d'analyse. Pandas a été conçu pour rendre ce pont aussi solide et facile à traverser que possible.

Analogie : L'établi de travail

Votre DataFrame Pandas, c'est votre établi (workbench). Importer des données, c'est aller chercher vos matières premières (fichiers CSV, Excel) et les disposer proprement sur l'établi. Exporter des données, c'est prendre votre produit fini (vos données nettoyées) et l'empaqueter pour l'expédition.

5.1. Importer des Données (Lecture de Fichiers)

Le Couteau Suisse : Lire des Fichiers CSV (read_csv)

C'est la fonction que vous utiliserez 90% du temps. Les fichiers CSV (Comma-Separated Values) sont le format le plus universel pour les données tabulaires.

Exemple de base

Supposons un fichier utilisateurs.csv :

nom,age,ville Alice,25,Paris Bob,30,Lyon Charlie,35,Paris

Le code pour le lire est très simple :

import pandas as pd df = pd.read_csv('utilisateurs.csv') print(df)

Gérer les cas courants avec les paramètres

Les fichiers CSV ne sont pas toujours parfaits. pd.read_csv() a des dizaines de paramètres. Voici les plus importants :

# Pour un fichier où les colonnes sont séparées par des points-virgules df_point_virgule = pd.read_csv('donnees.csv', sep=';') # Si le fichier n'a pas de ligne d'en-tête, on peut fournir nos propres noms noms_colonnes = ['NomUtilisateur', 'DateInscription', 'Score'] df_avec_noms = pd.read_csv('data_no_header.csv', header=None, names=noms_colonnes)

Travailler avec des Fichiers Excel (read_excel)

Pandas peut lire directement des fichiers Excel (.xls, .xlsx). Pour que cela fonctionne, vous pourriez avoir besoin d'installer une bibliothèque supplémentaire comme openpyxl (pip install openpyxl).

df_excel = pd.read_excel('rapport_ventes.xlsx') print(df_excel.head())

Un fichier Excel peut contenir plusieurs feuilles. Pour lire une feuille spécifique, utilisez le paramètre sheet_name.

# Lire la feuille nommée "Ventes_T2" df_t2 = pd.read_excel('rapport_ventes.xlsx', sheet_name='Ventes_T2')

Gérer des Données Web : Lire des Fichiers JSON (read_json)

Le format JSON est très courant pour les données provenant d'API Web. Supposons un fichier produits.json :

[ {"id": 1, "nom": "Stylo", "prix": 1.5}, {"id": 2, "nom": "Cahier", "prix": 3.0} ]
df_json = pd.read_json('produits.json') print(df_json)

5.2. Exporter des Données (Écriture de Fichiers)

Une fois que vous avez nettoyé, transformé ou analysé vos données, vous voudrez souvent sauvegarder le résultat avec les méthodes .to_*().

Exporter en CSV (.to_csv())

Le paramètre le plus important est index=False. Par défaut, Pandas inclut l'index du DataFrame comme première colonne dans votre fichier. Dans 99% des cas, vous ne voulez pas de cette colonne.

# Supposons que 'df_final' est notre DataFrame prêt à être exporté # BONNE pratique : df_final.to_csv('resultat.csv', index=False)

Exporter en Excel (.to_excel())

Le même principe s'applique. L'utilisation de index=False est également cruciale ici.

df_final.to_excel('rapport_final.xlsx', sheet_name='Resultats_Analyse', index=False)

5.3. Atelier Pratique : Nettoyer et Convertir

Objectif : Lire un fichier CSV "sale", effectuer un petit nettoyage, et le sauvegarder en tant que fichier Excel propre.

Créez un fichier commandes_brutes.csv avec un point-virgule comme séparateur :

ID Commande;Produit;Montant 1;Stylo Bleu;1.50 2;Cahier A4;3.00 3;Stylo Bleu;1.50

Écrivez le script Python nettoyage.py :

import pandas as pd # 1. IMPORTER : Lire le fichier CSV en spécifiant le séparateur df = pd.read_csv('commandes_brutes.csv', sep=';') print("Données initiales :\n", df) # 2. TRANSFORMER : df_propre = df.drop_duplicates(ignore_index=True) df_propre['TVA'] = df_propre['Montant'] * 0.20 print("\nDonnées nettoyées et enrichies :\n", df_propre) # 3. EXPORTER : Sauvegarder le résultat dans un fichier Excel nom_fichier_export = 'commandes_propres.xlsx' df_propre.to_excel(nom_fichier_export, sheet_name='Commandes', index=False) print(f"\nFichier '{nom_fichier_export}' créé avec succès !")

En exécutant ce script, vous aurez transformé un fichier CSV en un fichier Excel propre et enrichi, un flux de travail typique pour un data analyst.

Exercices Pratiques

Exercice 1 : Lire un CSV sans En-tête

Vous avez un fichier data.csv qui ne contient pas de ligne d'en-tête. Son contenu est : Alice,25,Paris\nBob,30,Lyon. Écrivez le code pour lire ce fichier et assigner les noms de colonnes "Nom", "Age", et "Ville".

Voir la solution
import pandas as pd from io import StringIO # Pour simuler un fichier en mémoire # Simule le contenu du fichier csv_data = "Alice,25,Paris\nBob,30,Lyon" # Noms des colonnes à assigner column_names = ['Nom', 'Age', 'Ville'] # Lire les données en utilisant header=None et names df = pd.read_csv(StringIO(csv_data), header=None, names=column_names) print(df)

Exercice 2 : Exporter vers Excel avec un Séparateur Personnalisé

Créez un DataFrame simple. Exportez-le dans un fichier CSV nommé export.csv en utilisant le pipe (|) comme séparateur et sans inclure l'index.

Voir la solution
import pandas as pd data = {'Fruit': ['Pomme', 'Banane'], 'Prix': [1.2, 0.8]} df = pd.DataFrame(data) # Exporter en CSV avec sep='|' et index=False df.to_csv('export.csv', sep='|', index=False) print("Le fichier 'export.csv' a été créé avec un séparateur '|'.")

Exercice 3 : Lire une Feuille Spécifique d'un Fichier Excel

Imaginez que vous avez un fichier Excel rapport.xlsx avec deux feuilles : "Ventes" (la première) et "Inventaire" (la deuxième). Écrivez le code pour lire uniquement les données de la feuille "Inventaire".

Voir la solution
import pandas as pd # Pour cet exemple, nous allons d'abord créer un faux fichier Excel # Dans un vrai scénario, ce fichier existerait déjà with pd.ExcelWriter('rapport.xlsx') as writer: pd.DataFrame({'Produit': ['A'], 'Ventes': [100]}).to_excel(writer, sheet_name='Ventes', index=False) pd.DataFrame({'Produit': ['B'], 'Stock': [50]}).to_excel(writer, sheet_name='Inventaire', index=False) # Lire la feuille 'Inventaire' df_inventaire = pd.read_excel('rapport.xlsx', sheet_name='Inventaire') print("Contenu de la feuille 'Inventaire' :\n", df_inventaire)