Fonction concat() 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 est
True, 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 est
None。
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
# 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 :
pd.concat([s1, s2])Concaténez deux Series verticalement pour obtenir une Series plus longue.- Par défaut, l'index d'origine est conservé, il y aura donc des valeurs d'index en double 0, 1, 2.
- Paramètre
ignore_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
# 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 :
- Utilisation
axis=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
# 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 utiliser
result['第一组']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
# 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)。
Autres extensionsAstuce :
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.
Fonctions courantes de Pandas