Concaténation de données Pandas (concat / append)
La concaténation de données joint plusieurs DataFrames ou Series par lignes ou par colonnes.pd.concatest la fonction principale de concaténation,appendest la version simplifiée (dépréciée, concat est recommandé à la place).
Utilisation de base de concat
pd.concat()Peut concaténer plusieurs DataFrames ou Series le long d'un axe.
Concaténation par lignes (empilement vertical)
Exemple
import pandas as pd
# Créer deux DataFrames
df1 = pd.DataFrame({
"Nom": ["Zhang San", "Li Si"],
"Âge": [25, 30]
})
df2 = pd.DataFrame({
"Nom": ["Wang Wu", "Zhao Liu"],
"Âge": [28, 35]
})
print("DataFrame 1:")
print(df1)
print()
print("DataFrame 2:")
print(df2)
print()
# Concaténer verticalement
result = pd.concat([df1, df2], ignore_index=True)
print("Résultat de la concaténation :")
print(result)
# Créer deux DataFrames
df1 = pd.DataFrame({
"Nom": ["Zhang San", "Li Si"],
"Âge": [25, 30]
})
df2 = pd.DataFrame({
"Nom": ["Wang Wu", "Zhao Liu"],
"Âge": [28, 35]
})
print("DataFrame 1:")
print(df1)
print()
print("DataFrame 2:")
print(df2)
print()
# Concaténer verticalement
result = pd.concat([df1, df2], ignore_index=True)
print("Résultat de la concaténation :")
print(result)
Concaténation par colonnes (empilement horizontal)
Exemple
import pandas as pd
df1 = pd.DataFrame({
"Nom": ["Zhang San", "Li Si", "Wang Wu"]
})
df2 = pd.DataFrame({
"Âge": [25, 30, 28],
"Ville": ["Beijing", "Shanghai", "Guangzhou"]
})
# Concaténer horizontalement
result = pd.concat([df1, df2], axis=1)
print("Concaténation horizontale :")
print(result)
df1 = pd.DataFrame({
"Nom": ["Zhang San", "Li Si", "Wang Wu"]
})
df2 = pd.DataFrame({
"Âge": [25, 30, 28],
"Ville": ["Beijing", "Shanghai", "Guangzhou"]
})
# Concaténer horizontalement
result = pd.concat([df1, df2], axis=1)
print("Concaténation horizontale :")
print(result)
axis=0Indique une concaténation par lignes (ajout de lignes),axis=1Indique une concaténation par colonnes (ajout de colonnes).
Gestion des index dupliqués
ignore_index
Exemple
import pandas as pd
df1 = pd.DataFrame({
"Nom": ["Zhang San", "Li Si"],
"Âge": [25, 30]
}, index=[0, 1])
df2 = pd.DataFrame({
"Nom": ["Wang Wu", "Zhao Liu"],
"Âge": [28, 35]
}, index=[0, 1])
# Conserver les index d'origine par défaut
print("Conserver les index d'origine :")
print(pd.concat([df1, df2]))
print()
# Ignorer les anciens index et les régénérer
print("Ignorer les index d'origine :")
print(pd.concat([df1, df2], ignore_index=True))
df1 = pd.DataFrame({
"Nom": ["Zhang San", "Li Si"],
"Âge": [25, 30]
}, index=[0, 1])
df2 = pd.DataFrame({
"Nom": ["Wang Wu", "Zhao Liu"],
"Âge": [28, 35]
}, index=[0, 1])
# Conserver les index d'origine par défaut
print("Conserver les index d'origine :")
print(pd.concat([df1, df2]))
print()
# Ignorer les anciens index et les régénérer
print("Ignorer les index d'origine :")
print(pd.concat([df1, df2], ignore_index=True))
Vérification des clés dupliquées
Exemple
import pandas as pd
df1 = pd.DataFrame({
"A": [1, 2]
})
df2 = pd.DataFrame({
"A": [3, 4]
})
# Vérifier s'il y a des clés dupliquées
print("Objet de vérification :")
print(pd.concat([df1, df2], verify_integrity=True))
df1 = pd.DataFrame({
"A": [1, 2]
})
df2 = pd.DataFrame({
"A": [3, 4]
})
# Vérifier s'il y a des clés dupliquées
print("Objet de vérification :")
print(pd.concat([df1, df2], verify_integrity=True))
Gestion des discordances de colonnes
Le paramètre join
Exemple
import pandas as pd
df1 = pd.DataFrame({
"A": [1, 2, 3],
"B": ["a", "b", "c"]
})
df2 = pd.DataFrame({
"B": ["x", "y", "z"],
"C": [10, 20, 30]
})
print("df1:")
print(df1)
print()
print("df2:")
print(df2)
print()
# Jointure externe (par défaut) : conserver toutes les colonnes
print("Jointure externe (conserver toutes les colonnes) :")
print(pd.concat([df1, df2], join="outer"))
print()
# Jointure interne : conserver uniquement les colonnes communes
print("Jointure interne (conserver les colonnes communes) :")
print(pd.concat([df1, df2], join="inner"))
df1 = pd.DataFrame({
"A": [1, 2, 3],
"B": ["a", "b", "c"]
})
df2 = pd.DataFrame({
"B": ["x", "y", "z"],
"C": [10, 20, 30]
})
print("df1:")
print(df1)
print()
print("df2:")
print(df2)
print()
# Jointure externe (par défaut) : conserver toutes les colonnes
print("Jointure externe (conserver toutes les colonnes) :")
print(pd.concat([df1, df2], join="outer"))
print()
# Jointure interne : conserver uniquement les colonnes communes
print("Jointure interne (conserver les colonnes communes) :")
print(pd.concat([df1, df2], join="inner"))
Ajouter uniquement les nouvelles colonnes
Exemple
import pandas as pd
df1 = pd.DataFrame({
"Nom": ["Zhang San", "Li Si"],
"Âge": [25, 30]
})
df2 = pd.DataFrame({
"City": ["Beijing", "Shanghai"]
})
# Ajouter les colonnes de df2 à df1
result = pd.concat([df1, df2], axis=1)
print("Ajouter uniquement les nouvelles colonnes :")
print(result)
df1 = pd.DataFrame({
"Nom": ["Zhang San", "Li Si"],
"Âge": [25, 30]
})
df2 = pd.DataFrame({
"City": ["Beijing", "Shanghai"]
})
# Ajouter les colonnes de df2 à df1
result = pd.concat([df1, df2], axis=1)
print("Ajouter uniquement les nouvelles colonnes :")
print(result)
Le paramètre keys pour créer un index hiérarchique
Exemple
import pandas as pd
df1 = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df2 = pd.DataFrame({"A": [5, 6], "B": [7, 8]})
df3 = pd.DataFrame({"A": [9, 10], "B": [11, 12]})
# Utiliser le paramètre keys pour créer un index hiérarchique
result = pd.concat([df1, df2, df3], keys=["Première année", "Deuxième année", "Troisième année"])
print("Concaténation avec index hiérarchique :")
print(result)
print()
# Obtenir les données de l'index hiérarchique
print("Obtenir les données de la deuxième année :")
print(result.loc["Deuxième année"])
df1 = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df2 = pd.DataFrame({"A": [5, 6], "B": [7, 8]})
df3 = pd.DataFrame({"A": [9, 10], "B": [11, 12]})
# Utiliser le paramètre keys pour créer un index hiérarchique
result = pd.concat([df1, df2, df3], keys=["Première année", "Deuxième année", "Troisième année"])
print("Concaténation avec index hiérarchique :")
print(result)
print()
# Obtenir les données de l'index hiérarchique
print("Obtenir les données de la deuxième année :")
print(result.loc["Deuxième année"])
Pratique : Combiner plusieurs mois de données
Exemple
import pandas as pd
# Simuler des données de ventes pour plusieurs mois
jan_sales = pd.DataFrame({
"Mois": ["2024-01"] * 3,
"Produit": ["A", "B", "C"],
"Ventes": [100, 150, 80]
})
feb_sales = pd.DataFrame({
"Mois": ["2024-02"] * 3,
"Produit": ["A", "B", "C"],
"Ventes": [120, 140, 90]
})
mar_sales = pd.DataFrame({
"Mois": ["2024-03"] * 3,
"Produit": ["A", "B", "C"],
"Ventes": [110, 160, 85]
})
# Combiner les données du premier trimestre
quarterly = pd.concat([jan_sales, feb_sales, mar_sales], ignore_index=True)
print("Résumé du premier trimestre :")
print(quarterly)
print()
# Agréger par mois
monthly_summary = quarterly.groupby("Month")["Sales"].sum()
print("Résumé des ventes mensuelles :")
print(monthly_summary)
# Simuler des données de ventes pour plusieurs mois
jan_sales = pd.DataFrame({
"Mois": ["2024-01"] * 3,
"Produit": ["A", "B", "C"],
"Ventes": [100, 150, 80]
})
feb_sales = pd.DataFrame({
"Mois": ["2024-02"] * 3,
"Produit": ["A", "B", "C"],
"Ventes": [120, 140, 90]
})
mar_sales = pd.DataFrame({
"Mois": ["2024-03"] * 3,
"Produit": ["A", "B", "C"],
"Ventes": [110, 160, 85]
})
# Combiner les données du premier trimestre
quarterly = pd.concat([jan_sales, feb_sales, mar_sales], ignore_index=True)
print("Résumé du premier trimestre :")
print(quarterly)
print()
# Agréger par mois
monthly_summary = quarterly.groupby("Month")["Sales"].sum()
print("Résumé des ventes mensuelles :")
print(monthly_summary)
La méthode append (obsolète)
DataFrame.append()Déprécié dans Pandas 2.0 et non recommandé. Veuillez utiliserpd.concat()à la place.
# 不推荐(已废弃) result = df1.append(df2) # 推荐 result = pd.concat([df1, df2])
Autres extensions
concatEst la méthode standard pour concaténer des données dans Pandas, avec de meilleures performances et des fonctionnalités plus complètes.