1. Pourquoi fusionner des données ?
Dans le monde actuel des données, il est assez rare de trouver toutes les informations nécessaires dans un seul fichier. Le plus souvent, les données sont dispersées dans plusieurs tableaux et fichiers, et une analyse complète nécessite de les fusionner. Par exemple, vous pourriez avoir des données de ventes mensuelles dans des fichiers séparés. Pour analyser les tendances globales, il faut combiner ces données dans un seul tableau.
En plus, fusionner les données permet de :
- Gagner du temps sur la création manuelle de rapports.
- Réduire le nombre d'erreurs liées au transfert manuel des données.
- Automatiser le processus de travail d’analyse de données.
2. Méthodes de fusion des données
Concaténation de données
La fusion verticale et horizontale des données s'appelle concaténation.
Prenons un exemple simple : nous avons deux DataFrame
que nous voulons fusionner.
import pandas as pd
# Créons deux DataFrame avec une structure similaire
data1 = {
'Product': ['Pommes', 'Bananes'],
'Sales': [100, 150]
}
data2 = {
'Product': ['Cerises', 'Dattes'],
'Sales': [75, 200]
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# Concaténation verticale (ajout des lignes)
combined = pd.concat([df1, df2], ignore_index=True)
print(combined)
Le résultat est un DataFrame
fusionné contenant toutes les lignes des deux sources.
Remarquez le paramètre ignore_index=True
, qui réinitialise les index dans le DataFrame
final.
Fusion des données avec la méthode merge
Lorsque vous avez des données à fusionner basées sur des colonnes communes (par exemple, id
ou Product
),
la méthode merge
vient à la rescousse. C’est comme un rendez-vous pour vos données — elles doivent avoir quelque chose en commun pour que cela fonctionne.
# Créons un exemple de données
sales_data = {
'Product': ['Pommes', 'Bananes', 'Cerises'],
'Sales': [100, 150, 75]
}
price_data = {
'Product': ['Pommes', 'Bananes', 'Dattes'],
'Price': [1.2, 0.8, 3.0]
}
sales_df = pd.DataFrame(sales_data)
price_df = pd.DataFrame(price_data)
# Fusionnons les DataFrame sur la colonne 'Product'
merged_df = pd.merge(sales_df, price_df, on='Product', how='inner')
print(merged_df)
Bien que nous ayons des informations sur chaque produit, merge
ne renvoie que les lignes qui ont une correspondance sur la colonne clé Product
.
Explorons les types de fusions :
inner
(par défaut) : ne renvoie que les lignes présentes dans les deuxDataFrame
.outer
: renvoie toutes les lignes, en remplaçant les valeurs manquantes parNaN
.left
: renvoie toutes les lignes duDataFrame
gauche et les lignes correspondantes du droit.right
: renvoie toutes les lignes duDataFrame
droit et les lignes correspondantes du gauche.
Fusion de données à partir de plusieurs feuilles
Maintenant que nous avons revu le fonctionnement de la fusion dans pandas, appliquons ces connaissances en pratique pour fusionner des données de plusieurs feuilles d’un fichier Excel.
# Lecture d'un fichier Excel avec plusieurs feuilles
excel_file = pd.ExcelFile('sales_data.xlsx')
# Liste des noms de toutes les feuilles
sheet_names = excel_file.sheet_names
# Lecture des données de chaque feuille dans un DataFrame distinct et ajout à une liste
dataframes = [pd.read_excel(excel_file, sheet_name=sheet_name) for sheet_name in sheet_names]
# Effectuons une concaténation verticale de tous les DataFrame
all_sales_data = pd.concat(dataframes, ignore_index=True)
print(all_sales_data)
Dans cet exemple, nous lisons toutes les feuilles d’un fichier Excel dans des DataFrame
distincts, puis nous les fusionnons en un seul.
Impressionnant, non ?
Fusion de données provenant de plusieurs fichiers
En pratique, il est fréquent que les données soient réparties sur plusieurs fichiers. Voyons comment automatiser leur fusion.
import glob
# Chemin vers les fichiers
file_path = r'data/sales_*.xlsx'
# Obtenons une liste de tous les fichiers correspondant au modèle
files = glob.glob(file_path)
# Lecture des données de chaque fichier dans un DataFrame distinct et ajout à une liste
dataframes = [pd.read_excel(file) for file in files]
# Effectuons une concaténation verticale de tous les DataFrame
all_files_data = pd.concat(dataframes, ignore_index=True)
print(all_files_data)
Nous utilisons la bibliothèque glob
pour obtenir une liste de fichiers correspondant au modèle spécifié,
puis nous fusionnons les données de chaque fichier en un seul DataFrame
.
3. Exemples réels d’utilisation
Fusion de données pour une analyse commerciale
Supposons que vous êtes analyste et que vous travaillez avec des données de ventes mensuelles dans des fichiers séparés. Avec les techniques mentionnées ci-dessus, vous pouvez facilement fusionner les données pour analyser les tendances annuelles et en tirer des conclusions pertinentes.
Automatisation des rapports
Grâce à l’automatisation de la fusion des données, vous pouvez configurer un script qui collectera des informations provenant de différentes sources et générera automatiquement des rapports quotidiens, hebdomadaires ou mensuels.
Traitement de données provenant de différentes sources
Vos données peuvent provenir de différents systèmes, où chaque source fournit une partie de l’information. Avec pandas, vous pouvez les fusionner pour obtenir une vue d'ensemble, par exemple en combinant des données sur les clients et leurs achats.
4. Erreurs typiques et leurs corrections
Une erreur fréquente est le décalage des noms de colonnes dans les DataFrame
à fusionner.
Assurez-vous que les colonnes par lesquelles vous fusionnez les données sont identiques et, si nécessaire, utilisez les paramètres
left_on
et right_on
dans la méthode merge
.
Parfois, les données peuvent contenir des valeurs manquantes après fusion.
Utilisez les méthodes de remplissage de valeurs fillna
ou de suppression dropna
pour résoudre ce problème.
Si vos données contiennent des doublons, la méthode concat
peut produire un DataFrame
plus long que prévu.
Dans ce cas, utilisez la méthode drop_duplicates
pour nettoyer les données.
Maintenant que nous avons abordé les différentes méthodes et astuces pour fusionner des données avec pandas, vous avez les outils nécessaires pour gérer des tâches réelles d’automatisation et d’analyse de données. Profitez-en et amusez-vous !
GO TO FULL VERSION