pandas

Comment rejoindre des DataFrames dans Pandas Python?

Comment rejoindre des DataFrames dans Pandas Python?
Pandas DataFrame est une structure de données bidimensionnelle (2D) alignée dans un format tabulaire. Ces DataFrames peuvent être combinés à l'aide de différentes méthodes telles que concat(), merge() et joins. Les pandas ont des performances élevées et des opérations de jointure complètes qui ressemblent à la base de données relationnelle SQL. En utilisant la fonction de fusion, les opérations de jointure peuvent être implémentées entre les objets DataFrames.

Nous explorerons les utilisations de la fonction de fusion, de la fonction de concat et des différents types d'opérations de jointure dans Pandas python dans cet article. Tous les exemples seront exécutés via l'éditeur pycharm. Commençons par les détails!

Utilisation de la fonction de fusion

La syntaxe de base couramment utilisée de la fonction merge() est donnée ci-dessous :

pd.merge(df_obj1, df_obj2, how='inner', on=None, left_on=None, right_on=None)

Expliquons les détails des paramètres :

Les deux premiers df_obj1 et df_obj2 les arguments sont les noms des objets ou des tables DataFrame.

Le "commentLe paramètre " est utilisé pour différents types d'opérations de jointure telles que "gauche, droite, externe et interne". La fonction de fusion utilise l'opération de jointure "interne" par défaut.

L'argument "au" contient le nom de la colonne sur laquelle l'opération de jointure est effectuée. Cette colonne doit être présente dans les deux objets DataFrame.

Dans les arguments "left_on" et "right_on", "left_on" est le nom du nom de la colonne comme clé dans le DataFrame de gauche. Le « right_on » est le nom de la colonne utilisée comme clé du DataFrame de droite.

Pour élaborer sur le concept de rejoindre DataFrames, nous avons pris deux objets DataFrame - produit et client. Les détails suivants sont présents dans le produit DataFrame :

produit=pd.Trame de données(
'Product_ID' :[101,102,103,104,105,106,107],
'Product_Name' :['écouteurs','Sac','Chaussures','Smartphone','Brosse à dents','montre-bracelet','Ordinateur portable'],
'Catégorie' :['Electronique','Mode','Mode','Électronique','Épicerie','Mode','Électronique'],
'Prix' :[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City' :['Islamabad','Lahore','Karachi','Rawalpindi','Islamabad','Karachi','Faisalabad']
)

Le DataFrame client contient les détails suivants :

client=pd.Trame de données(
'ID' :[1,2,3,4,5,6,7,8,9],
'Customer_Name' :['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Âge' :[20,21,15,10,31,52,15,18,16],
'Product_ID' :[101,0,106,0,103,104,0,0,107],
'Product_Purchased' :['écouteurs','NA','montre-bracelet','NA','Chaussures','Smartphone','NA','NA','Laptop'],
'Client_Ville' :['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)

Joindre des DataFrames sur une clé

Nous pouvons facilement trouver les produits vendus en ligne et les clients qui les ont achetés. Ainsi, sur la base d'une clé "Product_ID", nous avons effectué l'opération de jointure interne sur les deux DataFrames comme suit :

# importer la bibliothèque Pandas
importer des pandas au format pd
produit=pd.Trame de données(
'Product_ID' :[101,102,103,104,105,106,107],
'Product_Name' :['écouteurs','Sac','Chaussures','Smartphone','Brosse à dents','montre-bracelet','Ordinateur portable'],
'Catégorie' :['Electronique','Mode','Mode','Électronique','Épicerie','Mode','Électronique'],
'Prix' :[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City' :['Islamabad','Lahore','Karachi','Rawalpindi','Islamabad','Karachi','Faisalabad']
)
client=pd.Trame de données(
'ID' :[1,2,3,4,5,6,7,8,9],
'Customer_Name' :['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Âge' :[20,21,15,10,31,52,15,18,16],
'Product_ID' :[101,0,106,0,103,104,0,0,107],
'Product_Purchased' :['écouteurs','NA','montre-bracelet','NA','Chaussures','Smartphone','NA','NA','Laptop'],
'Ville' :['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
imprimer (pd.merge(product,customer,on='Product_ID'))

La sortie suivante s'affiche dans la fenêtre après avoir exécuté le code ci-dessus :

Si les colonnes sont différentes dans les deux DataFrames, écrivez explicitement le nom de chaque colonne par les arguments left_on et right_on comme suit :

importer des pandas au format pd
produit=pd.Trame de données(
'Product_ID' :[101,102,103,104,105,106,107],
'Product_Name' :['casque d'écoute','Sac','Chaussures','Smartphone','Brosse à dents','montre-bracelet','Ordinateur portable'],
'Catégorie' :['Electronique','Mode','Mode','Électronique','Épicerie','Mode','Électronique'],
'Prix' :[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City' :['Islamabad','Lahore','Karachi','Rawalpindi','Islamabad','Karachi','Faisalabad']
)
client=pd.Trame de données(
'ID' :[1,2,3,4,5,6,7,8,9],
'Customer_Name' :['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Âge' :[20,21,15,10,31,52,15,18,16],
'Product_ID' :[101,0,106,0,103,104,0,0,107],
'Product_Purchased' :['écouteurs','NA','montre-bracelet','NA','Chaussures','Smartphone','NA','NA','Laptop'],
'Ville' :['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
imprimer (pd.merge(product,customer,left_on='Product_Name',right_on='Product_Purchased'))

La sortie suivante s'affichera à l'écran :

Joindre des DataFrames à l'aide de How Argument

Dans les exemples suivants, nous expliquerons quatre types d'opérations de jointure sur les Pandas DataFrames :

Inner Join in Pandas

Nous pouvons effectuer une jointure interne sur plusieurs clés. Pour afficher plus de détails sur les ventes de produits, prenez Product_ID, Seller_City du produit DataFrame et Product_ID, et "Customer_City" du client DataFrame pour constater que le vendeur ou le client appartient à la même ville. Implémentez les lignes de code suivantes :

# importer la bibliothèque Pandas
importer des pandas au format pd
produit=pd.Trame de données(
'Product_ID' :[101,102,103,104,105,106,107],
'Product_Name' :['casque d'écoute','Sac','Chaussures','Smartphone','Brosse à dents','montre-bracelet','Ordinateur portable'],
'Catégorie' :['Electronique','Mode','Mode','Électronique','Épicerie','Mode','Électronique'],
'Prix' :[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City' :['Islamabad','Lahore','Karachi','Rawalpindi','Islamabad','Karachi','Faisalabad']
)
client=pd.Trame de données(
'ID' :[1,2,3,4,5,6,7,8,9],
'Customer_Name' :['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Âge' :[20,21,15,10,31,52,15,18,16],
'Product_ID' :[101,0,106,0,103,104,0,0,107],
'Product_Purchased' :['écouteurs','NA','montre-bracelet','NA','Chaussures','Smartphone','NA','NA','Laptop'],
'Client_Ville' :['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
imprimer (pd.merge(product,customer,how='inner',left_on=['Product_ID','Seller_City'],right_on=['Product_ID','Customer_City']))

Le résultat suivant s'affiche dans la fenêtre après avoir exécuté le code ci-dessus :

Join complet/extérieur dans Pandas

Les jointures externes renvoient les valeurs DataFrames droite et gauche, qui ont des correspondances. Donc, pour implémenter la jointure externe, définissez l'argument "comment" comme externe. Modifions l'exemple ci-dessus en utilisant le concept de jointure externe. Dans le code ci-dessous, il renverra toutes les valeurs des DataFrames gauche et droit.

# importer la bibliothèque Pandas
importer des pandas au format pd
produit=pd.Trame de données(
'Product_ID' :[101,102,103,104,105,106,107],
'Product_Name' :['casque d'écoute','Sac','Chaussures','Smartphone','Brosse à dents','montre-bracelet','Ordinateur portable'],
'Catégorie' :['Electronique','Mode','Mode','Électronique','Épicerie','Mode','Électronique'],
'Prix' :[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City' :['Islamabad','Lahore','Karachi','Rawalpindi','Islamabad','Karachi','Faisalabad']
)
client=pd.Trame de données(
'ID' :[1,2,3,4,5,6,7,8,9],
'Customer_Name' :['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Âge' :[20,21,15,10,31,52,15,18,16],
'Product_ID' :[101,0,106,0,103,104,0,0,107],
'Product_Purchased' :['écouteurs','NA','montre-bracelet','NA','Chaussures','Smartphone','NA','NA','Laptop'],
'Client_Ville' :['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
imprimer (pd.merge(product,customer,on='Product_ID',how='outer'))

Définissez l'argument de l'indicateur sur « True ». Vous remarquerez que la nouvelle colonne « _merge » est ajoutée à la fin.

# importer la bibliothèque Pandas
importer des pandas au format pd
produit=pd.Trame de données(
'Product_ID' :[101,102,103,104,105,106,107],
'Product_Name' :['casque d'écoute','Sac','Chaussures','Smartphone','Brosse à dents','montre-bracelet','Ordinateur portable'],
'Catégorie' :['Electronique','Mode','Mode','Électronique','Épicerie','Mode','Électronique'],
'Prix' :[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City' :['Islamabad','Lahore','Karachi','Rawalpindi','Islamabad','Karachi','Faisalabad']
)
client=pd.Trame de données(
'ID' :[1,2,3,4,5,6,7,8,9],
'Customer_Name' :['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Âge' :[20,21,15,10,31,52,15,18,16],
'Product_ID' :[101,0,106,0,103,104,0,0,107],
'Product_Purchased' :['écouteurs','NA','montre-bracelet','NA','Chaussures','Smartphone','NA','NA','Laptop'],
'Client_Ville' :['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
imprimer (pd.merge(product,customer,on='Product_ID',how='outer',indicator=True))

Comme vous pouvez le voir dans la capture d'écran ci-dessous, les valeurs de colonne de fusion expliquent quelle ligne appartient à quel DataFrame.

Rejoindre à gauche dans Pandas

La jointure gauche n'affiche que les lignes du DataFrame gauche.  C'est similaire à la jointure externe. Donc, changez la valeur de l'argument "comment" avec "gauche". Essayez le code suivant pour implémenter l'idée de la jointure gauche :

# importer la bibliothèque Pandas
importer des pandas au format pd
produit=pd.Trame de données(
'Product_ID' :[101,102,103,104,105,106,107],
'Product_Name' :['casque d'écoute','Sac','Chaussures','Smartphone','Brosse à dents','montre-bracelet','Ordinateur portable'],
'Catégorie' :['Electronique','Mode','Mode','Électronique','Épicerie','Mode','Électronique'],
'Prix' :[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City' :['Islamabad','Lahore','Karachi','Rawalpindi','Islamabad','Karachi','Faisalabad']
)
client=pd.Trame de données(
'ID' :[1,2,3,4,5,6,7,8,9],
'Customer_Name' :['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Âge' :[20,21,15,10,31,52,15,18,16],
'Product_ID' :[101,0,106,0,103,104,0,0,107],
'Product_Purchased' :['écouteurs','NA','montre-bracelet','NA','Chaussures','Smartphone','NA','NA','Laptop'],
'Client_Ville' :['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
imprimer (pd.merge(product,customer,on='Product_ID',how='left'))

Rejoindre à droite dans Pandas

La jointure droite conserve toutes les lignes DataFrame droites à droite ainsi que les lignes qui sont également communes dans le DataFrame gauche. Dans ce cas, l'argument "comment" est défini comme la valeur "correcte". Exécutez le code suivant pour implémenter le bon concept de jointure :

# importer la bibliothèque Pandas
importer des pandas au format pd
produit=pd.Trame de données(
'Product_ID' :[101,102,103,104,105,106,107],
'Product_Name' :['casque d'écoute','Sac','Chaussures','Smartphone','Brosse à dents','montre-bracelet','Ordinateur portable'],
'Catégorie' :['Electronique','Mode','Mode','Électronique','Épicerie','Mode','Électronique'],
'Prix' :[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City' :['Islamabad','Lahore','Karachi','Rawalpindi','Islamabad','Karachi','Faisalabad']
)
client=pd.Trame de données(
'ID' :[1,2,3,4,5,6,7,8,9],
'Customer_Name' :['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Âge' :[20,21,15,10,31,52,15,18,16],
'Product_ID' :[101,0,106,0,103,104,0,0,107],
'Product_Purchased' :['écouteurs','NA','montre-bracelet','NA','Chaussures','Smartphone','NA','NA','Laptop'],
'Client_Ville' :['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
imprimer (pd.merge(product,customer,on='Product_ID',how='right'))

Dans la capture d'écran suivante, vous pouvez voir le résultat après avoir exécuté le code ci-dessus :

Jointure de DataFrames à l'aide de la fonction Concat()

Deux DataFrames peuvent être joints à l'aide de la fonction concat. La syntaxe de base de la fonction de concaténation est donnée ci-dessous :

pd.concat([df_obj1, df_obj_2]))

Deux objets DataFrames passeront comme arguments.

Joignons à la fois le produit et le client DataFrames via la fonction concat. Exécutez les lignes de code suivantes pour joindre deux DataFrames :

# importer la bibliothèque Pandas
importer des pandas au format pd
produit=pd.Trame de données(
'Product_ID' :[101,102,103,104,105,106,107],
'Product_Name' :['casque d'écoute','Sac','Chaussures','Smartphone','Brosse à dents','montre-bracelet','Ordinateur portable'],
'Catégorie' :['Electronique','Mode','Mode','Électronique','Épicerie','Mode','Électronique'],
'Prix' :[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City' :['Islamabad','Lahore','Karachi','Rawalpindi','Islamabad','Karachi','Faisalabad']
)
client=pd.Trame de données(
'ID' :[1,2,3,4,5,6,7,8,9],
'Customer_Name' :['Sara','Sana','Ali','Raees','Mahwish','Umar','Mirha','Asif','Maria'],
'Âge' :[20,21,15,10,31,52,15,18,16],
'Product_ID' :[101,0,106,0,103,104,0,0,107],
'Product_Purchased' :['écouteurs','NA','montre-bracelet','NA','Chaussures','Smartphone','NA','NA','Laptop'],
'Client_Ville' :['Lahore','Islamabad','Faisalabad','Karachi','Karachi','Islamabad','Rawalpindi','Islamabad',
'Lahore']
)
imprimer (pd.concat([produit,client]))

Conclusion:

Dans cet article, nous avons discuté de l'implémentation de la fonction merge (), des fonctions concat () et de l'opération de jointure dans Pandas python. En utilisant les méthodes ci-dessus, vous pouvez facilement joindre deux DataFrames et apprendre. comment implémenter les opérations Join "interne, externe, gauche et droite" dans Pandas. Espérons que ce tutoriel vous guidera dans la mise en œuvre des opérations de jointure sur différents types de DataFrames. Merci de nous faire part de vos difficultés en cas d'erreur.

Meilleures distributions Linux pour les jeux en 2021
Le système d'exploitation Linux a parcouru un long chemin depuis son apparence originale, simple et basée sur le serveur. Ce système d'exploitation s'...
Comment capturer et diffuser votre session de jeu sur Linux
Dans le passé, jouer à des jeux n'était considéré qu'un passe-temps, mais avec le temps, l'industrie du jeu a connu une croissance énorme en termes de...
Meilleurs jeux à jouer avec le suivi des mains
Oculus Quest a récemment introduit l'idée géniale du suivi manuel sans contrôleurs. Avec un nombre toujours croissant de jeux et d'activités qui exécu...