Fonction concat() de Pandas

Pandas 通用函数Fonctions courantes de Pandas


pd.concat()est utilisée dans la bibliothèque Pandas pourconcaténer (joindre) plusieurs objets Series ou DataFramefonction. Elle peut fusionner plusieurs objets en un nouvel objet selon la ligne ou la colonne.

Il s'agit de l'une des opérations de fusion les plus couramment utilisées dans le traitement des données, qu'il s'agisse d'ajouter des données verticalement ou de fusionner des champs horizontalement,pd.concat()elle en est parfaitement capable.

Définition du mot: concatest une abréviation de « concatenate » (connecter, lier en série), signifiant connecter plusieurs choses bout à bout.


Syntaxe de base et paramètres

pd.concat()est une fonction de premier niveau de la bibliothèque Pandas, utilisée pour concaténer plusieurs objets Series ou DataFrame le long d'un axe spécifié.

Format de syntaxe

pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False)

Description du paramètre

  • Paramètre: objs
    • Type : Series, DataFrame, ou une liste de ceux-ci.
    • Description : Un ou plusieurs objets Series/DataFrame à concaténer. Ils peuvent être un objet unique, une liste ou un dictionnaire.
  • Paramètre: axis
    • Type : Entier (0 ou 1).
    • Description : Spécifie l'axe de concaténation.0signifie concaténer par lignes (ajout vertical),1signifie concaténer par colonnes (fusion horizontale). La valeur par défaut est0。
  • Paramètre: join
    • Type : Chaîne ('outer' ou 'inner').
    • Description : Comment gérer lorsque les index le long de l'axe de concaténation sont incohérents.'outer'signifie prendre l'union (en conservant tous les index),'inner'signifie prendre l'intersection (en conservant uniquement les index communs). La valeur par défaut est'outer'。
  • Paramètre: ignore_index
    • Type : booléen.
    • Description : S'il estTrue, l'index d'origine n'est pas utilisé après la concaténation ; à la place, un nouvel index entier est créé. La valeur par défaut estFalse。
  • Paramètre: keys
    • Type : Séquence.
    • Description : Sert à créer un index à plusieurs niveaux après concaténation, identifiant la source de chaque objet d'origine. La valeur par défaut estNone。

Description de la fonction

  • Valeur de retour: Renvoie l'objet Series ou DataFrame concaténé. Le type est cohérent avec les objets d'entrée.
  • Effet: Fusionne plusieurs objets en un seul objet le long de l'axe spécifié.

Exemples

À travers une série d'exemples du plus simple au plus complexe, maîtrisons parfaitementpd.concat()l'utilisation.

Exemple 1 : Utilisation de base - Concaténation verticale de Series

Exemple

import pandas as pd

# 1. Créer deux Series
s1 = pd.Series(['Alice', 'Bob', 'Charlie'], name='name')
s2 = pd.Series(['Diana', 'Eve', 'Frank'], name='name')

print(=== Series d'origine ===)
print("s1:", s1.tolist())
print("s2:", s2.tolist())

# 2. Utiliser pd.concat() pour concaténer verticalement (axis=0 par défaut)
result = pd.concat([s1, s2])
print("\n=== Résultat de la concaténation verticale de pd.concat([s1, s2]) ===)
print(result)

# 3. Ignorer l'index d'origine et créer un nouvel index entier
result_ignore = pd.concat([s1, s2], ignore_index=True)
print("\n=== Résultat de ignore_index=True ===)
print(result_ignore)

Sortie attendue :

=== 原始 Series ===
s1: ['Alice', 'Bob', 'Charlie']
s2: ['Diana', 'Eve', 'Frank']

=== pd.concat([s1, s2]) 纵向拼接结果 ===
0      Alice
1        Bob
2    Charlie
0     Diana
1        Eve
2     Frank
dtype: object

=== ignore_index=True 结果 ===
0      Alice
1        Bob
2    Charlie
3      Diana
4        Eve
5      Frank
dtype: object

Analyse du code :

  1. pd.concat([s1, s2])Concaténez deux Series verticalement pour obtenir une Series plus longue.
  2. Par défaut, l'index d'origine est conservé, il y aura donc des valeurs d'index en double 0, 1, 2.
  3. Paramètreignore_index=Truepeut régénérer un index numérique continu.

Exemple 2 : Concaténation horizontale de DataFrame

Utilisationaxis=1vous pouvez concaténer plusieurs DataFrames par colonne, ce qui est très utile lors de la fusion de différents champs.

Exemple

import pandas as pd

# 1. Créer deux DataFrames
df1 = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35]
})

df2 = pd.DataFrame({
    'city': ['Beijing', 'Shanghai', 'Guangzhou'],
    'score': [85, 90, 95]
})

print(=== DataFrame d'origine ===)
print("df1:")
print(df1)
print("\ndf2:")
print(df2)

# 2. Concaténation horizontale (axis=1)
result = pd.concat([df1, df2], axis=1)
print("\n=== Concaténation horizontale avec pd.concat([df1, df2], axis=1) ===)
print(result)

Sortie attendue :

=== 原始 DataFrame ===
df1:
      name  age
0   Alice   25
1     Bob   30
2 Charlie   35

df2:
        city  score
0   Beijing     85
1  Shanghai     90
2  Guangzhou     95

=== pd.concat([df1, df2], axis=1) 横向拼接 ===
      name  age      city  score
0   Alice   25   Beijing     85
1     Bob   30  Shanghai     90
2 Charlie   35  Guangzhou     95

Analyse du code :

  • Utilisationaxis=1concaténer les deux DataFrames par colonne.
  • La concaténation horizontale nécessite que les deux DataFrames aient le même nombre de lignes (alignement des index).
  • Le DataFrame concaténé contient toutes les colonnes des deux objets.

Exemple 3 : Utilisation du paramètre keys pour créer un index hiérarchique

keysLe paramètre peut nous aider à identifier la source des données, ce qui est très utile lors de la fusion de contenus provenant de différents jeux de données.

Exemple

import pandas as pd

# 1. Créer un dictionnaire contenant plusieurs Series
data = {
    'group_a': pd.Series([1, 2, 3, 4]),
    'group_b': pd.Series([5, 6, 7, 8]),
    'group_c': pd.Series([9, 10, 11, 12])
}

print(=== Concaténation en utilisant le paramètre keys ===)
# 2. Utiliser le paramètre keys pour créer un index hiérarchique
result = pd.concat(data, keys=['Group 1', 'Group 2', 'Group 3'])
print(result)

# 3. Accéder aux données à un niveau spécifique
print("\n=== Accès aux données de 'Group 1' ===)
print(result['Group 1'])

Sortie attendue :

=== 使用 keys 参数拼接 ===
第一组  group_a    1
        group_b    2
        group_c    3
        group_a    4
第二组  group_a    5
        group_b    6
        group_c    7
        group_a    8
第二组  group_b    9
...

Analyse du code :

  • keysLe paramètre crée un index multi-niveaux (index hiérarchique) pour le résultat de la concaténation, le premier niveau identifiant le groupe source des données.
  • Vous pouvez utiliserresult['第一组']pour accéder aux données d’un groupe spécifique.

Exemple 4 : Gestion de DataFrames avec des colonnes différentes (paramètre join)

Lorsque les DataFrames à concaténer ont des colonnes différentes, vous pouvez utiliserjoinle paramètre pour contrôler la méthode de gestion.

Exemple

import pandas as pd

# 1. Créer des DataFrames avec des colonnes différentes
df1 = pd.DataFrame({
    'name': ['Alice', 'Bob'],
    'age': [25, 30]
})

df2 = pd.DataFrame({
    'name': ['Charlie', 'Diana'],
    'score': [85, 90]
})

print(=== DataFrame d'origine ===)
print("df1:")
print(df1)
print("\ndf2:")
print(df2)

# 2. Jointure externe (par défaut) - conserver toutes les colonnes
print("\n=== join='outer' (jointure externe) ===)
print(pd.concat([df1, df2], join='outer'))

# 3. Jointure interne - conserver uniquement les colonnes communes
print("\n=== join='inner' (jointure interne) ===)
print(pd.concat([df1, df2], join='inner'))

Sortie attendue :

=== 原始 DataFrame ===
df1:
    name  age
0  Alice   25
1    Bob   30

df2:
      name  score
0  Charlie     85
1    Diana     90

=== join='outer' (外连接) ===
      name   age  score
0    Alice  25.0   NaN
1      Bob  30.0   NaN
0  Charlie  NaN  85.0
1   Diana  NaN  90.0

=== join='inner' (内连接) ===
      name
0    Alice
1      Bob
0  Charlie
1  Diana

Analyse du code :

  • join='outer'(par défaut) conserve toutes les colonnes, les colonnes manquantes sont remplies avecNaN。
  • join='inner'ne conserve que les colonnes communes aux deux DataFrames (ici, c'estname)。

Astuce : pd.concat()est adapté aux opérations de concaténation simples. Si vous avez besoin de fusions plus complexes (comme une correspondance basée sur les valeurs de colonnes), veuillez vous référer àpd.merge()fonction.

Pandas 常用函数Fonctions courantes de Pandas

Autres extensions