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)

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)

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))

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))

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"))

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)

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"])

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)

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])

concatEst la méthode standard pour concaténer des données dans Pandas, avec de meilleures performances et des fonctionnalités plus complètes.

Autres extensions