Skip to content

Les entrées / sorties de données avec Pandas

Pandas peut lire et écrire des données depuis de nombreuses sources : fichiers CSV, tables HTML, fichiers Excel, bases de données SQL, etc.

👉 Objectif principal

comprendre la logique générale

  • pd.read_*() → lire des données
  • df.to_*() → écrire des données

Lecture et écriture de fichiers CSV

Avant de lire un fichier CSV, vous devez :

  • connaître l’emplacement exact du fichier
  • connaître le nom exact du fichier
  • comprendre le répertoire de travail courant
Lire un fichier CSV
python
import pandas as pd

df = pd.read_csv("example.csv")

Options courantes :

python
pd.read_csv("example.csv", header=None)     # pas d'en-tête
pd.read_csv("example.csv", index_col=0)     # définir une colonne comme index
Écrire un fichier CSV
python
df.to_csv("nouveau_fichier.csv")

Options importantes :

python
df.to_csv("nouveau_fichier.csv", index=False)

⚠️

Par défaut, Pandas sauvegarde l’index dans le fichier CSV.

Lecture et écriture de tables HTML

Pandas peut lire automatiquement les tableaux HTML (<table>) présents dans :

  • une URL
  • un fichier HTML local

⚠️

  • tous les tableaux ne sont pas lisibles (JavaScript, images, formats dynamiques)
  • certains sites peuvent bloquer l’accès
Lire des tableaux HTML depuis une URL
python
url = "https://en.wikipedia.org/wiki/World_population"
tables = pd.read_html(url)
  • Le résultat est toujours une liste
  • Chaque élément est un DataFrame
python
len(tables)
tables[0]
Nettoyage d’un tableau HTML
python
df = tables[0]

# supprimer des lignes
df = df.drop(index=11)

# supprimer une colonne
df = df.drop(columns="#")

# renommer les colonnes
df.columns = ["Pays", "2000", "2015", "Estimation 2030"]
Écrire un DataFrame en HTML
python
df.to_html("table_population.html", index=False)

Lire un fichier Excel

python
df = pd.read_excel("my_excel_file.xlsx", sheet_name="First Sheet")
Lister les feuillets d’un fichier Excel
python
xls = pd.ExcelFile("my_excel_file.xlsx")
xls.sheet_names
Lire tous les feuillets (dictionnaire)
python
sheets_dict = pd.read_excel(
    "my_excel_file.xlsx",
    sheet_name=None
)
  • clé → nom du feuillet
  • valeur → DataFrame
python
sheets_dict["First Sheet"]
Écrire un DataFrame dans un fichier Excel
python
df.to_excel(
    "example.xlsx",
    sheet_name="First Sheet",
    index=False
)

⚠️ Si le fichier existe déjà, Pandas écrase le feuillet.

Fichier Python associé

input & output
py
"""
panda_input_output.py
=====================
Guide pratique pour l'entrée et la sortie de données avec Pandas
Documentation officielle : https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html
"""

import numpy as np
import pandas as pd
from sqlalchemy import create_engine

# ======================================================
# 1. Lecture et écriture d'un CSV
# ======================================================

# Lecture d'un fichier CSV
df = pd.read_csv('./data/example.csv')                  # lecture simple
df = pd.read_csv('./data/example.csv', index_col=0)    # lecture avec l'index sur la première colonne

# Écriture d'un CSV
# index=False pour ne pas sauvegarder l'index par défaut, sinon une colonne "Unnamed: 0" sera ajoutée
df.to_csv('new_file.csv', index=False)


# ======================================================
# 2. Lecture et écriture HTML
# ======================================================

"""
Pandas peut lire les tables HTML avec read_html.  
Nécessite parfois l'installation de : lxml, html5lib, beautifulsoup4
Exemples d'installation :
    pip install lxml html5lib beautifulsoup4
"""

# Lire toutes les tables d'une page Wikipedia
tables = pd.read_html('https://en.wikipedia.org/wiki/World_population')
print(f"Nombre de tables trouvées : {len(tables)}")

# Exemple de sélection et nettoyage
world_pop = tables[0]
world_pop.columns = ['Countries', '2000', '2015', '2030 Est.']
world_pop = world_pop.drop(11, axis=0)  # suppression d'une ligne inutile

# Affichage du DataFrame final
print(world_pop.head())

# Écriture vers un fichier HTML
world_pop.to_html('simple_table.html', index=False)


# ======================================================
# 3. Lecture et écriture Excel
# ======================================================

"""
Pandas peut lire des fichiers Excel (.xlsx, .xls)
Nécessite les bibliothèques : openpyxl et xlrd
    pip install openpyxl xlrd
Chaque feuille (sheet) peut être importée en DataFrame.
"""

# Lecture d'une feuille spécifique
df_excel = pd.read_excel('./data/my_excel_file.xlsx', sheet_name='First_Sheet')

# Pour connaître les noms des feuilles
sheet_names = pd.ExcelFile('./data/my_excel_file.xlsx').sheet_names
print(sheet_names)

# Écriture d'un DataFrame vers Excel
df_excel.to_excel('./data/example.xlsx', sheet_name='First_Sheet', index=False)


# ======================================================
# 4. Lecture et écriture SQL
# ======================================================

"""
Pandas peut interagir avec SQL via SQLAlchemy.  
Pour d'autres moteurs SQL (MySQL, PostgreSQL, MS SQL Server, Oracle, MongoDB),
il est recommandé d'utiliser le pilote Python correspondant et SQLAlchemy.

Exemple ci-dessous avec SQLite, intégré à Python.
"""

# Création d'une base de données SQLite temporaire en mémoire
temp_db = create_engine('sqlite:///:memory:')

# Exemple : utiliser la table populations du HTML précédent
pop = tables[6]
pop.to_sql(name='populations', con=temp_db, index=False, if_exists='replace')  # écrire dans SQL

# Lecture d'une table entière
df_pop = pd.read_sql(sql='populations', con=temp_db)
print(df_pop.head())

# Lecture avec une requête SQL
df_query = pd.read_sql_query(sql="SELECT Country FROM populations", con=temp_db)
print(df_query.head())

"""
Remarques importantes :
- Pandas + SQL dépend du moteur, des permissions, et de la configuration de la base.
- Pour MySQL, PostgreSQL, MS SQL Server, Oracle, etc., consultez la documentation officielle de SQLAlchemy et du pilote correspondant.
- Google est très utile pour trouver des exemples spécifiques selon votre moteur SQL.
"""