Recherche de site Web

Les 4 types de jointures DataFrame proposées par la bibliothèque pandas de Python


Combinez des ensembles de données de plusieurs manières différentes à l'aide de la bibliothèque pandas.

En tant qu'analyste de données, vous serez souvent confronté au besoin de combiner plusieurs ensembles de données. Vous devrez le faire pour compléter votre analyse et arriver à une conclusion pour votre entreprise/parties prenantes.

Il est souvent difficile de représenter des données lorsqu’elles sont stockées dans différentes tables. Dans de telles circonstances, les jointures font leurs preuves, quel que soit le langage de programmation sur lequel vous travaillez.

Les jointures Python sont comme les jointures SQL : elles combinent des ensembles de données en faisant correspondre leurs lignes sur un index commun.

Créer deux DataFrames pour référence

Pour suivre les exemples de ce guide, vous pouvez créer deux exemples de DataFrames. Utilisez le code suivant pour créer le premier DataFrame, qui contient un ID, un prénom et un nom.

import pandas as pd
 
a = pd.DataFrame({"ID": ["001", "002", "003", "004", "005"],
    "Fname": ["Ron", "John", "Helen", "Jenny", "Kenny"],
    "Lname": ["Keith", "Harley", "Smith", "Kerr-Hislop", "Barber"]})
print(a)

Pour la première étape, importez la bibliothèque pandas. Vous pouvez ensuite utiliser une variable, a, pour stocker le résultat du constructeur DataFrame. Transmettez au constructeur un dictionnaire contenant vos valeurs requises.

Enfin, affichez le contenu de la valeur DataFrame avec la fonction d'impression, pour vérifier que tout ressemble à ce que vous attendez.

De même, vous pouvez créer un autre DataFrame, b, qui contient un identifiant et des valeurs de salaire.

b = pd.DataFrame({"ID": ["001", "002", "003", "004", "005"],
    "Salary": [100000, 700000, 80000, 904750, 604772]})
 
print(b)

Vous pouvez vérifier la sortie dans une console ou un IDE. Il devrait confirmer le contenu de vos DataFrames :

En quoi les jointures sont-elles différentes de la fonction de fusion en Python ?

La bibliothèque pandas est l'une des principales bibliothèques que vous pouvez utiliser pour manipuler des DataFrames. Étant donné que les DataFrames contiennent plusieurs ensembles de données, diverses fonctions sont disponibles en Python pour les joindre.

Python propose, entre autres, les fonctions de jointure et de fusion que vous pouvez utiliser pour combiner des DataFrames. Il existe une différence marquée entre ces deux fonctions, que vous devez garder à l’esprit avant d’utiliser l’une ou l’autre.

La fonction join joint deux DataFrames en fonction de leurs valeurs d'index. La fonction de fusion combine les DataFrames en fonction des valeurs d'index et des colonnes.

Que devez-vous savoir sur les jointures en Python ?

Avant de discuter des types de jointures disponibles, voici quelques points importants à noter :

  • Les jointures SQL sont l'une des fonctions les plus basiques et sont assez similaires aux jointures de Python.
  • Pour rejoindre des DataFrames, vous pouvez utiliser la méthode pandas.DataFrame.join().
  • La jointure par défaut effectue une jointure gauche, tandis que la fonction de fusion effectue une jointure interne.

La syntaxe par défaut d'une jointure Python est la suivante :

DataFrame.join(other, on=None, how='left/right/inner/outer', lsuffix='', rsuffix='',
   sort=False)

Invoquez la méthode join sur le premier DataFrame et transmettez le deuxième DataFrame comme premier paramètre, other. Les arguments restants sont les suivants :

  • on, qui nomme un index sur lequel se joindre, s'il y en a plusieurs.
  • comment, qui définit le type de jointure, notamment interne, externe, gauche et droite.
  • lsuffix, qui définit la chaîne de suffixe gauche du nom de votre colonne.
  • rsuffixe, qui définit la chaîne de suffixe droite du nom de votre colonne.
  • sort, qui est un booléen indiquant s'il faut trier le DataFrame résultant.

Apprenez à utiliser les différents types de jointures en Python

Python propose quelques options de jointure, que vous pouvez exercer en fonction des besoins du moment. Voici les types de jointure :

1. Rejoindre à gauche

La jointure de gauche conserve intactes les valeurs du premier DataFrame tout en introduisant les valeurs correspondantes du second. Par exemple, si vous souhaitez importer les valeurs correspondantes de b, vous pouvez le définir comme suit :

c = a.join(b, how="left", lsuffix = "_left", rsuffix = "_right", sort = True)
print(c)

Lorsque la requête s'exécute, la sortie contient les références de colonnes suivantes :

  • ID_gauche
  • Fnom
  • Nom
  • ID_droit
  • Salaire

Cette jointure extrait les trois premières colonnes du premier DataFrame et les deux dernières colonnes du deuxième DataFrame. Il a utilisé les valeurs lsuffix et rsuffix pour renommer les colonnes d'ID des deux ensembles de données, garantissant ainsi que les noms de champs résultants sont uniques.

Le résultat est le suivant :

2. Rejoindre à droite

La jointure de droite conserve les valeurs du deuxième DataFrame intactes, tout en introduisant les valeurs correspondantes de la première table. Par exemple, si vous souhaitez importer les valeurs correspondantes de a, vous pouvez le définir comme suit :

c = b.join(a, how="right", lsuffix = "_right", rsuffix = "_left", sort = True)
print(c)

Le résultat est le suivant :

Si vous examinez le code, vous remarquerez quelques changements évidents. Par exemple, le résultat inclut les colonnes du deuxième DataFrame avant celles du premier DataFrame.

Vous devez utiliser la valeur right pour l'argument how afin de spécifier une jointure à droite. Notez également comment vous pouvez permuter les valeurs lsuffix et rsuffix pour refléter la nature de la bonne jointure.

Dans vos jointures habituelles, vous pourriez vous retrouver à utiliser plus fréquemment les jointures gauche, internes et externes que la jointure droite. Cependant, l'utilisation dépend entièrement de vos besoins en données.

3. Jointure interne

Une jointure interne fournit les entrées correspondantes des deux DataFrames. Étant donné que les jointures utilisent les numéros d'index pour faire correspondre les lignes, une jointure interne renvoie uniquement les lignes qui correspondent. Pour cette illustration, utilisons les deux DataFrames suivants :

a = pd.DataFrame({"ID": ["001", "002", "003", "004", "005", "006", "007"],
    "Fname": ["Ron", "John", "Helen", "Jenny", "Kenny", "Daryl", "Cathy"],
    "Lname": ["Keith", "Harley", "Smith", "Kerr-Hislop", "Barber", "Hooper", "Hope"]})
b = pd.DataFrame({"ID": ["001", "002", "003", "004", "005"],
    "Salary": [100000, 700000, 80000, 904750, 604772]})
 
print(a)
print(b)

Le résultat est le suivant :

Vous pouvez utiliser une jointure interne, comme suit :

c = a.join(b, lsuffix="_left", rsuffix="_right", how='inner')
print(c)

La sortie résultante contient uniquement les lignes qui existent dans les deux DataFrames d'entrée :

4. Jointure externe

Une jointure externe renvoie toutes les valeurs des deux DataFrames. Pour les lignes sans valeurs correspondantes, cela produit une valeur nulle sur les cellules individuelles.

En utilisant le même DataFrame que ci-dessus, voici le code de la jointure externe :

c = a.join(b, lsuffix="_left", rsuffix="_right", how='outer')
print(c)

Utiliser les jointures en Python

Les jointures, comme leurs fonctions homologues, de fusion et de concaténation, offrent bien plus qu'une simple fonctionnalité de jointure. Compte tenu de sa série d'options et de fonctions, vous pouvez choisir les options qui répondent à vos exigences.

Vous pouvez trier les ensembles de données résultants relativement facilement, avec ou sans la fonction de jointure, grâce aux options flexibles proposées par Python.

Articles connexes: