English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Exemple d'opération de connexion Pandas
Pandas dispose d'opérations de connexion en mémoire à haute performance et fonctionnelles, très similaires à celles des bases de données relationnelles telles que SQL.
Pandas fournit une fonction merge unique en tant qu'entrée pour toutes les opérations de jointure standard de base de données entre les objets DataFrame.
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True)
Ici, nous utilisons les paramètres suivants :
left − Un objet DataFrame. right − Un autre objet DataFrame. on − Ajouter les colonnes (noms) en haut. Doit être trouvé dans les objets DataFrame de gauche et de droite. left_on − Les colonnes du DataFrame gauche sont utilisées comme clé. Cela peut être un nom de colonne ou un tableau de longueur égale à la longueur du DataFrame. right_on − Les colonnes du DataFrame droit sont utilisées comme clé. Cela peut être un nom de colonne ou un tableau de longueur égale à la longueur du DataFrame. left_index − Si True, utiliser l'index gauche (étiquette de ligne) du DataFrame comme clé de connexion. Si le DataFrame a un MultiIndex (index hiérarchique), le nombre de niveaux doit correspondre au nombre de clés de connexion du DataFrame droit. right_index − Utiliser de la même manière que left_index pour le bon DataFrame. how − Un des éléments suivants : 'gauche', 'droite', 'externe', 'interne'. Par défaut, c'est interne. Chaque méthode est décrite ci-dessous. sort − Ajouter les données de résultats triées dans l'ordre alphabétique des clés du dictionnaire. Par défaut, c'est True, mais dans de nombreux cas, le réglage à False améliorera considérablement les performances.
Maintenant, créons deux DataFrame différents et exécutons des opérations de fusion sur eux.
# import the pandas library import pandas as pd left = pd.DataFrame({ 1',2',3',4',5, 'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame( {'id': [1',2',3',4',5, ], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],2','sub4','sub3','sub6','sub5}) print(left print(right)
Le résultat de l'exécution est le suivant :
Name id subject_id 0 Alex 1 sub1 1 Amy 2 sub2 2 Allen 3 sub4 3 Alice 4 sub6 4 Ayoung 5 sub5 Name id subject_id 0 Billy 1 sub2 1 Brian 2 sub4 2 Bran 3 sub3 3 Bryce 4 sub6 4 Betty 5 sub5
import pandas as pd left = pd.DataFrame({ 1',2',3',4',5, 'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 1',2',3',4',5, ], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],2','sub4','sub3','sub6','sub5']}) print(pd.merge(left, right, on='id'))
Le résultat de l'exécution est le suivant :
Name id subject_id_x Name_y subject_id_y 0 Alex 1 sub1 Billy sub2 1 Amy 2 sub2 Brian sub4 2 Allen 3 sub4 Bran sub3 3 Alice 4 sub6 Bryce sub6 4 Ayoung 5 sub5 Betty sub5
import pandas as pd left = pd.DataFrame({ 1',2',3',4',5, 'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 1',2',3',4',5, ], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],2','sub4','sub3','sub6','sub5']}) print(pd.merge(left, right, on=['id', 'subject_id']))
Le résultat de l'exécution est le suivant :
Name_x id subject_id Name_y 0 Alice 4 sub6 Bryce 1 Ayoung 5 sub5 Betty
Le paramètre how de fusion détermine comment déterminer quels clés doivent être inclus dans le tableau de résultats. Si la clé de combinaison n'apparaît pas dans la table de gauche ou la table de droite, la valeur dans le tableau de fusion est NA.
Voici un résumé sur la manière de choisir et leurs noms équivalents SQL:
méthode de fusion | Équivalent SQL | description |
left | JOIN EXTÉRIEUR À GAUCHE | utiliser la clé de l'objet de gauche |
right | JOIN EXTÉRIEUR À DROITE | utiliser la clé de l'objet correct |
outer | JOIN EXTÉRIEUR COMPLET | utiliser la clé conjointe |
inner | JOIN INTÉRIEUR | utiliser l'intersection des clés |
import pandas as pd left = pd.DataFrame({ 1',2',3',4',5, 'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 1',2',3',4',5, ], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],2','sub4','sub3','sub6','sub5']}) print(pd.merge(left, right, on='subject_id', how='left'))
Le résultat de l'exécution est le suivant :
Nom_x id_x subject_id Nom_y id_y 0 Alex 1 sub1 NaN NaN 1 Amy 2 sub2 Billy 1.0 2 Allen 3 sub4 Brian 2.0 3 Alice 4 sub6 Bryce 4.0 4 Ayoung 5 sub5 Betty 5.0
import pandas as pd left = pd.DataFrame({ 1',2',3',4',5, 'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 1',2',3',4',5, ], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],2','sub4','sub3','sub6','sub5']}) print(pd.merge(left, right, on='subject_id', how='right'))
Le résultat de l'exécution est le suivant :
Name_x id_x subject_id Name_y id_y 0 Amy 2.0 sub2 Billy 1 1 Allen 3.0 sub4 Brian 2 2 Alice 4.0 sub6 Bryce 4 3 Ayoung 5.0 sub5 Betty 5 4 NaN NaN sub3 Bran 3
import pandas as pd left = pd.DataFrame({ 1',2',3',4',5, 'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 1',2',3',4',5, ], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],2','sub4','sub3','sub6','sub5']}) print(pd.merge(left, right, how='outer', on='subject_id'))
Le résultat de l'exécution est le suivant :
Name_x id_x subject_id Name_y id_y 0 Alex 1.0 sub1 NaN NaN 1 Amy 2.0 sub2 Billy 1.0 2 Allen 3.0 sub4 Brian 2.0 3 Alice 4.0 sub6 Bryce 4.0 4 Ayoung 5.0 sub5 Betty 5.0 5 NaN NaN sub3 Bran 3.0
La connexion s'exécute sur l'index. L'opération de jointure accepte l'objet appelant. Par conséquent, a.join(b) n'est pas égal à b.join(a).
import pandas as pd left = pd.DataFrame({ 1',2',3',4',5, 'Nom': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 1',2',3',4',5, ], 'Nom': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],2','sub4','sub3','sub6','sub5']}) print(pd.merge(left, right, on='subject_id', how='inner'))
Le résultat de l'exécution est le suivant :
Nom_x id_x subject_id Nom_y id_y 0 Amy 2 sub2 Billy 1 1 Allen 3 sub4 Brian 2 2 Alice 4 sub6 Bryce 4 3 Ayoung 5 sub5 Betty 5