Sauvegarde et Exportation des Données
Une fois les données nettoyées et préparées, la dernière étape consiste à sauvegarder et exporter ces données dans un format adapté pour leur partage, leur stockage ou leur utilisation future. Ce chapitre explore les différentes méthodes d’exportation et de stockage des données vers des formats courants, des bases de données ou même des objets Python sérialisés. Vous apprendrez à choisir la méthode d’exportation la plus adaptée à vos besoins en termes de performance, de compatibilité et de pérennité des données.
Ce que vous allez apprendre dans ce chapitre :
Export en CSV, JSON, Excel, Parquet
- Exporter un DataFrame en CSV avec
to_csv()
: Permet d’enregistrer un DataFrame au format CSV pour une utilisation ou un partage ultérieur. - Exporter un DataFrame en CSV sans index avec
to_csv(index=False)
: Évite d’enregistrer l’index du DataFrame dans le fichier CSV. - Exporter un DataFrame en JSON avec
to_json()
: Permet de sauvegarder un DataFrame au format JSON. - Exporter un DataFrame en JSON avec différentes options (
orient
etlines
) : Contrôle la structure du fichier JSON (par exempleorient='records'
pour une liste de dictionnaires, oulines=True
pour un JSON ligne par ligne). - Exporter un DataFrame en Excel avec
to_excel()
: Enregistre un DataFrame dans un fichier Excel (.xlsx). - Exporter un DataFrame en Excel avec plusieurs feuilles (
sheet_name
) : Utilise unpd.ExcelWriter
pour écrire plusieurs DataFrames dans un seul fichier Excel avec des feuilles différentes. - Exporter un DataFrame en Parquet avec
to_parquet()
: Formate les données pour un stockage binaire plus efficace, souvent utilisé dans les pipelines de big data. - Exporter un DataFrame en Parquet avec compression (
compression='snappy'
) : Réduit la taille du fichier tout en conservant les performances de lecture/écriture. - Exporter un DataFrame avec des options supplémentaires (encodage, colonnes spécifiques, etc.) : Contrôle précis de l’export, comme
encoding='utf-8-sig'
pour compatibilité Excel oucolumns=[...]
pour restreindre les colonnes exportées. - Exporter un DataFrame en format HTML avec
to_html()
: Génère un tableau HTML à partir d’un DataFrame, utile pour les rapports ou les pages web.
Stockage en base de données
- Création d’une connexion à une base de données avec SQLAlchemy : Utilise
create_engine()
pour établir une connexion avec une base SQL (PostgreSQL, SQLite, MySQL, etc.). - Stocker un DataFrame dans une base de données SQL avec
to_sql()
: Envoie les données d’un DataFrame dans une table SQL existante ou nouvelle. - Utiliser
if_exists
pour contrôler le comportement de la table : Précise s’il faut'fail'
,'replace'
ou'append'
les données dans la base. - Stocker un DataFrame dans une table existante avec
to_sql()
etif_exists='append'
: Ajoute de nouvelles lignes sans supprimer les anciennes. - Utiliser des types de données personnalisés dans SQLAlchemy pour les colonnes : Permet de spécifier explicitement les types SQL (ex :
Integer
,String
,Date
). - Exécuter des requêtes SQL via SQLAlchemy (
session.execute()
) : Permet d’exécuter manuellement des requêtes ou instructions SQL. - Charger des données depuis une base de données SQL avec
read_sql()
: Récupère les données d’une table ou requête SQL directement dans un DataFrame. - Configurer une session avec SQLAlchemy pour des transactions : Utilise
sessionmaker()
pour créer une session de transaction contrôlée. - Utiliser les transactions avec SQLAlchemy pour garantir la cohérence des données : Enchaîne plusieurs opérations dans une transaction atomique avec
commit()
etrollback()
.
Enregistrement d’objets Python
- Introduction à la sérialisation d’objets Python : Transformation d’un objet Python en un format binaire pour le stocker ou l’envoyer.
- Enregistrer un objet avec
pickle
: Utilisepickle.dump(obj, file)
pour sauvegarder un objet dans un fichier binaire. - Charger un objet avec
pickle
: Utilisepickle.load(file)
pour restaurer un objet précédemment sérialisé. - Protéger contre l’exécution de code malveillant lors de l’utilisation de
pickle
: Ne jamais charger des fichiers pickle provenant de sources non fiables. - Utiliser
joblib
pour la sérialisation efficace de grands objets : Plus rapide et plus efficace que pickle pour les objets volumineux (comme les modèles scikit-learn). - Charger un objet avec
joblib
: Utilisejoblib.load('fichier.joblib')
pour charger un fichier sérialisé. - Comparaison entre
pickle
etjoblib
:joblib
est mieux optimisé pour les objets de grande taille contenant des tableaux numpy. - Sérialisation d’objets personnalisés avec
pickle
: Permet d’enregistrer et de restaurer des instances de classes définies par l’utilisateur. - Utilisation de
joblib
pour la compression de fichiers lors de l’enregistrement : Ajout du paramètrecompress=3
pour réduire la taille du fichier. - Enregistrement et chargement de modèles de machine learning avec
joblib
: Standard pour sauvegarder les modèles scikit-learn, pipelines, ou objets entraînés.
💡 Exporter correctement vos données est essentiel pour garantir leur réutilisabilité et leur intégrité dans le temps.