Skip to content

Comment concaténer deux DataFrames Pandas: Expliqué!

Updated on

Pandas est l'un des outils open source les plus populaires pour la science des données. Il fournit des structures de données DataFrame qui offrent des performances de haut niveau pour la manipulation, le nettoyage, l'analyse et la visualisation de données tabulaires. En Pandas, il est courant de devoir fusionner deux DataFrames ou plus pour réaliser une analyse sur les données. Nous pouvons y parvenir en combinant les DataFrames soit horizontalement, soit verticalement. Ici, nous illustrerons et discuterons en détail les deux méthodes.

Vous voulez créer rapidement une visualisation de données à partir d'un DataFrame Pandas en Python sans écrire de code ?

PyGWalker est une bibliothèque Python pour l'exploration des données avec une visualisation. PyGWalker (opens in a new tab) peut simplifier votre flux de travail d'analyse et de visualisation de données dans Jupyter Notebook, en transformant votre dataframe pandas (et dataframe polars) en une interface utilisateur de style Tableau pour l'exploration visuelle.

PyGWalker pour la visualisation de données (opens in a new tab)

Concaténer deux DataFrames verticalement

En Pandas, deux DataFrames peuvent être concaténés en utilisant la méthode concat(). Pour le démontrer, nous commencerons par créer deux exemples de DataFrames. Dans le premier DataFrame d'exemple, disons que nous avons des informations sur certains employés dans une entreprise:

import pandas as pd
 
# Création du DataFrame 1
df1 = pd.DataFrame({
    'Nom': ['John', 'Jack', 'Steve', 'Sarah'],
    'Âge': [24, 32, 19, 29],
    'Genre': ['M', 'M', 'M', 'F']
})

Cela créera un DataFrame qui ressemble à ceci:

    Nom    Âge Genre
0   John   24   M
1   Jack   32   M
2   Steve  19   M
3   Sarah  29   F

Disons que nous avons un autre DataFrame qui contient des informations sur les départements de l'entreprise:

# Création du DataFrame 2
df2 = pd.DataFrame({
    'Département': ['Marketing', 'Ventes', 'Ressources humaines'],
    'Employés': [15, 12, 10],
})

Cela créera un DataFrame qui ressemble à ceci:

        Département        Employés
0       Marketing          15
1       Ventes             12
2       Ressources humaines 10

Maintenant, nous pouvons utiliser la méthode concat() pour combiner les deux DataFrames verticalement:

# Concaténation verticale
df3 = pd.concat([df1, df2], axis=0)

Ici, le paramètre axis=0 indique que nous voulons concaténer les DataFrames en les empilant les uns sur les autres (c'est-à-dire verticalement). Après la concaténation, nous obtenons le résultat suivant:

        Nom    Âge   Genre  Département         Employés
0       John   24     M     NaN           NaN
1       Jack   32     M     NaN           NaN
2       Steve  19     M     NaN           NaN
3       Sarah  29     F     NaN           NaN
0       NaN    NaN    NaN    Marketing     15
1       NaN    NaN    NaN    Ventes        12
2       NaN    NaN    NaN    Ressources humaines 10

Nous pouvons voir que les deux DataFrames sont concaténés comme souhaité, mais il y a des valeurs NaN (nulles) dans le nouveau DataFrame lorsque les noms de colonnes ne correspondent pas. Nous pouvons supprimer ces lignes si elles ne correspondent pas à notre analyse de données, ou nous pouvons fournir certaines valeurs par défaut pour remplir les valeurs nulles.

Concaténer deux DataFrames horizontalement

Nous pouvons également concaténer deux DataFrames horizontalement (c'est-à-dire les combiner côte à côte) en utilisant la méthode concat(), comme ceci:

# Concaténation horizontale
df4 = pd.concat([df1, df2], axis=1)

Ici, le paramètre axis=1 indique que nous voulons concaténer les DataFrames en les mettant côte à côte (c'est-à-dire horizontalement). Après la concaténation, nous obtenons le résultat suivant:

    Nom    Âge Genre    Département       Employés
0   John   24   M       Marketing       15
1   Jack   32   M       Ventes          12
2   Steve  19   M       Ressources humaines 10
3   Sarah  29   F       NaN             NaN

Nous pouvons voir que les deux DataFrames sont concaténés horizontalement comme souhaité. Cependant, nous avons des valeurs NaN (nulles) dans le nouveau DataFrame lorsque les noms de lignes ne correspondent pas. Encore une fois, nous pouvons supprimer ces lignes si elles ne correspondent pas à notre analyse de données, ou nous pouvons fournir certaines valeurs par défaut pour remplir les valeurs nulles.

Concaténer des DataFrames avec des colonnes différentes

Que se passe-t-il si les deux DataFrames à concaténer ont des colonnes différentes? Dans de tels cas, Pandas identifiera les noms de colonnes non correspondants et les ajoutera au nouveau DataFrame comme des colonnes distinctes. Illustrons cela avec un exemple:

# Création d'un DataFrame avec des colonnes différentes
df5 = pd.DataFrame({
    'Nom de l'employé': ['John', 'Jack', 'Steve', 'Sarah'],
    'Âge de l'employé': [24, 32, 19, 29],
    'Titre du poste': ['Gestionnaire', 'Assistant', 'Commis', 'Cadre']
})

Cela créera un DataFrame qui ressemble à ceci:

    Nom de l'employé   Âge de l'employé   Titre du poste
0       John               24             Gestionnaire
1       Jack               32             Assistant
2       Steve              19             Commis
3       Sarah              29             Cadre

Maintenant, nous pouvons concaténer df1 et df5:

# Concaténer df1 et df5
df6 = pd.concat([df1, df5], axis=1)

Après la concaténation, nous obtenons le résultat suivant:

    Nom    Âge Genre  Nom de l'employé   Âge de l'employé   Titre du poste
0   John   24   M     John               24                 Gestionnaire
1   Jack   32   M     Jack               32                 Assistant
2   Steve  19   M     Steve              19                 Commis
3   Sarah  29   F     Sarah              29                 Cadre

Comme on peut le voir, Pandas concatène les deux DataFrames en ajoutant les colonnes qui ne correspondent pas en tant que colonnes séparées dans le nouveau DataFrame.

Ignorer l'index lors de la concaténation de DataFrames horizontalement

Lors de la concaténation de deux DataFrames horizontalement, le DataFrame résultant conserve les index d'origine des deux DataFrames. Cela peut poser des problèmes lors de la manipulation de ce nouveau DataFrame. Par conséquent, il peut être nécessaire dans certains cas d'ignorer l'index lors de la concaténation horizontale. Nous pouvons accomplir cela en définissant le paramètre ignore_index sur True lors de la concaténation :

# Concaténer df1 et df2 en ignorant l'index
df7 = pd.concat([df1, df2], axis=1, ignore_index=True)

Après la concaténation, nous obtenons la sortie suivante :

    0       1   2   3               4
0   John    24  M   Marketing      15
1   Jack    32  M   Sales          12
2   Steve   19  M   Human Resources 10
3   Sarah   29  F   NaN            NaN

Maintenant, le nouveau DataFrame a un nouvel index, ce qui est plus pratique pour une analyse ultérieure des données.

Conclusion

La concaténation verticale ou horizontale des DataFrames Pandas nous offre un moyen efficace de fusionner des données pour des analyses. Avec ce guide, nous avons couvert les bases de la concaténation en utilisant la méthode concat(). Avec un peu de pratique et une meilleure connaissance des DataFrames Pandas, vous serez en mesure de prendre de grandes quantités de données et de les transformer en informations. Si vous souhaitez en savoir plus sur Pandas, consultez nos pages de tutoriel Pandas ci-dessous :