En tant qu'analyste de données, vous serez souvent confronté à la nécessité de combiner plusieurs ensembles de données. Vous devrez le faire pour compléter votre analyse et arriver à une conclusion pour votre entreprise/vos 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.
importer pandas comme pd
a = pd. Trame de données({"IDENTIFIANT": ["001", "002", "003", "004", "005"],
"Nom": ["Ron", "John", "Hélène", "Jenny", "Kenny"],
"Nom": ["Keith", "Harley", "Forgeron", "Kerr-Hislop", "Coiffeur"]})
imprimer(un)
Pour la première étape, importez le pandas bibliothèque. Vous pouvez alors utiliser une variable, un, pour stocker le résultat du constructeur DataFrame. Passez 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 attendiez.
De même, vous pouvez créer un autre DataFrame, b, qui contient un ID et des valeurs de salaire.
b = pd. Trame de données({"IDENTIFIANT": ["001", "002", "003", "004", "005"],
"Un salaire": [100000, 700000, 80000, 904750, 604772]})
imprimer(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 les DataFrames. Étant donné que les DataFrames contiennent plusieurs ensembles de données, diverses fonctions sont disponibles en Python pour les joindre.
Python offre les fonctions de jointure et de fusion, parmi beaucoup d'autres, que vous pouvez utiliser pour combiner des DataFrames. Il existe une nette différence 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 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 éléments importants à noter :
- Les jointures SQL sont l'une des fonctions les plus élémentaires et sont assez similaires aux jointures de Python.
- Pour joindre des DataFrames, vous pouvez utiliser le pandas. DataFrame.join() méthode.
- 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 (autre, on=None, how='gauche/droite/intérieur/extérieur', le suffixe='', suffixe='',
trier=Faux)
Appelez la méthode join sur le premier DataFrame et passez le second DataFrame comme premier paramètre, autre. Les arguments restants sont :
- sur, qui nomme un index à joindre, s'il y en a plusieurs.
- comment, qui définit le type de jointure, y compris interne, externe, gauche et droite.
- le suffixe, qui définit la chaîne de suffixe gauche du nom de votre colonne.
- suffixe, qui définit la chaîne de suffixe droite du nom de votre colonne.
- trier, 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 a quelques options de jointure, que vous pouvez exercer, selon le besoin de l'heure. Voici les types de jointure :
1. Joint gauche
La jointure gauche conserve les valeurs du premier DataFrame intactes tout en apportant 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, comment="la gauche", suffixe = "_la gauche", suffixe = "_droit", trier = Vrai)
imprimer(c)
Lorsque la requête s'exécute, le résultat contient les références de colonne suivantes :
- ID_left
- Nom
- Nom
- ID_right
- Un salaire
Cette jointure extrait les trois premières colonnes du premier DataFrame et les deux dernières colonnes du second DataFrame. Il a utilisé le le suffixe et suffixe valeurs pour renommer les colonnes d'ID des deux ensembles de données, en veillant à ce que les noms de champ résultants soient uniques.
La sortie est la suivante :
2. Joindre à droite
La jointure droite conserve les valeurs du deuxième DataFrame intactes, tout en apportant les valeurs correspondantes de la première table. Par exemple, si vous souhaitez importer les valeurs correspondantes de un, vous pouvez le définir comme suit :
c = b.join (a, comment="droit", suffixe = "_droit", suffixe = "_la gauche", trier = Vrai)
imprimer(c)
La sortie est la suivante :
Si vous examinez le code, il y a quelques changements évidents. Par exemple, le résultat inclut les colonnes du deuxième DataFrame avant celles du premier DataFrame.
Vous devez utiliser une valeur de droit pour le comment argument pour spécifier une jointure droite. Notez également comment vous pouvez changer le le suffixe et suffixe valeurs pour refléter la nature de la jointure droite.
Dans vos jointures régulières, vous pourriez vous retrouver à utiliser plus fréquemment des jointures gauches, internes et externes, par rapport à 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 ne renvoie que les lignes qui correspondent. Pour cette illustration, utilisons les deux DataFrames suivants :
a = pd. Trame de données({"IDENTIFIANT": ["001", "002", "003", "004", "005", "006", "007"],
"Nom": ["Ron", "John", "Hélène", "Jenny", "Kenny", "Daryl", "Cathy"],
"Nom": ["Keith", "Harley", "Forgeron", "Kerr-Hislop", "Coiffeur", "Hooper", "Espoir"]})
b = pd. Trame de données({"IDENTIFIANT": ["001", "002", "003", "004", "005"],
"Un salaire": [100000, 700000, 80000, 904750, 604772]})
imprimer(un)
imprimer(b)
La sortie est la suivante :
Vous pouvez utiliser une jointure interne, comme suit :
c = a.join (b, lsuffix="_la gauche", suffixe="_droit", comment='intérieur')
imprimer(c)
La sortie résultante contient uniquement des 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, il produit une valeur nulle sur les cellules individuelles.
En utilisant le même DataFrame que ci-dessus, voici le code pour la jointure externe :
c = a.join (b, lsuffix="_la gauche", suffixe="_droit", comment='extérieur')
imprimer(c)
Utilisation des jointures en Python
Les jointures, comme leurs homologues, merge et concat, 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 besoins.
Vous pouvez trier les ensembles de données résultants relativement facilement, avec ou sans la fonction de jointure, avec les options flexibles offertes par Python.