V tem članku bomo raziskali uporabo funkcije spajanja, funkcije concat in različne vrste operacij združevanja v Pandas python. Vsi primeri se bodo izvajali prek urejevalnika pycharm. Začnimo s podrobnostmi!
Uporaba funkcije spajanja
Osnovna pogosto uporabljena sintaksa funkcije merge () je podana spodaj:
pd.spajanje (df_obj1, df_obj2, kako = 'notranje', on = Brez, left_on = Noben, right_on = Noben)Pojasnimo podrobnosti parametrov:
Prva dva df_obj1 in df_obj2 Argumenti so imena predmetov ali tabel DataFrame.
„kakoParameter "se uporablja za različne vrste operacij združevanja, kot so" levo, desno, zunanje in notranje ". Funkcija spajanja privzeto uporablja operacijo »notranjega« združevanja.
Argument »Vklopljeno« vsebuje ime stolpca, na katerem se izvede operacija združevanja. Ta stolpec mora biti prisoten v obeh objektih DataFrame.
V argumentih "left_on" in "right_on" je "left_on" ime imena stolpca kot ključ v levem DataFrame. "Right_on" je ime stolpca, ki se uporablja kot ključ desnega podatkovnega okvira.
Za podrobnejšo predstavitev koncepta pridružitve DataFrames smo vzeli dva predmeta DataFrame - izdelek in kupec. V podatkovnem okviru izdelka so naslednje podrobnosti:
izdelek = pd.DataFrame ('Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalke', 'Torba', 'Čevlji', 'Pametni telefon', 'Ščetka za zobe', 'zapestna ura', 'Prenosnik'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Živila', 'Moda', 'Elektronika'],
„Cena“: [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
Stranka DataFrame vsebuje naslednje podrobnosti:
kupec = pd.DataFrame („ID“: [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
„Starost“: [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalke', 'NA', 'zapestna ura', 'NA', 'Čevlji', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Pridružite se okvirjem DataFrames na ključu
Z lahkoto najdemo izdelke, ki se prodajajo po spletu, in kupce, ki so jih kupili. Tako smo na podlagi ključa »Product_ID« izvedli operacijo notranjega združevanja na obeh DataFrames, kot sledi:
# uvozi knjižnico Pandasuvozi pande kot pd
izdelek = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalke', 'Torba', 'Čevlji', 'Pametni telefon', 'Ščetka za zobe', 'zapestna ura', 'Prenosnik'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Živila', 'Moda', 'Elektronika'],
„Cena“: [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupec = pd.DataFrame (
„ID“: [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
„Starost“: [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalke', 'NA', 'zapestna ura', 'NA', 'Čevlji', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Mesto': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
tiskanje (pd.spajanje (izdelek, stranka, na = 'ID_izdelka'))
Po zagonu zgornje kode se v oknu prikaže naslednji izhod:
Če se stolpca v obeh DataFrames razlikujeta, ime vsakega stolpca izrecno napišite z argumentoma left_on in right_on, kot sledi:
uvozi pande kot pdizdelek = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalke', 'Torba', 'Čevlji', 'Pametni telefon', 'Ščetka za zobe', 'zapestna ura', 'Prenosnik'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Živila', 'Moda', 'Elektronika'],
„Cena“: [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupec = pd.DataFrame (
„ID“: [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
„Starost“: [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalke', 'NA', 'zapestna ura', 'NA', 'Čevlji', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Mesto': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
tiskanje (pd.spajanje (izdelek, stranka, left_on = 'Product_Name', right_on = 'Product_Purchased'))
Na zaslonu se prikaže naslednji izhod:
Pridružite se DataFrames z uporabo How Argument
V naslednjih primerih bomo razložili štiri vrste operacij združevanja na Pandas DataFrames:
- Notranje pridružitev
- Zunanje Pridružite se
- Levo Pridružite se
- Pridružite se
Notranje pridružitev v Pandah
Na več tipkah lahko izvedemo notranje združevanje. Če želite prikazati več podrobnosti o prodaji izdelka, vzemite Product_ID, Seller_City iz izdelka DataFrame in Product_ID in “Customer_City” od stranke DataFrame, da ugotovite, ali prodajalec ali kupec pripada istemu mestu. Izvedite naslednje vrstice kode:
# uvozi knjižnico Pandasuvozi pande kot pd
izdelek = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalke', 'Torba', 'Čevlji', 'Pametni telefon', 'Ščetka za zobe', 'zapestna ura', 'Prenosnik'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Živila', 'Moda', 'Elektronika'],
„Cena“: [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupec = pd.DataFrame (
„ID“: [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
„Starost“: [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalke', 'NA', 'zapestna ura', 'NA', 'Čevlji', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
tiskanje (pd.spajanje (izdelek, stranka, kako = 'notranja', left_on = ['Product_ID', 'Seller_City'], right_on = ['Product_ID', 'Customer_City']))
Po zagonu zgornje kode se v oknu prikaže naslednji rezultat:
Popolno / zunanje združevanje v Pandah
Zunanja združevanja vrnejo tako desno kot levo vrednost DataFrames, ki se ujemata. Za izvedbo zunanjega združevanja nastavite argument »kako« kot zunanji. Spremenimo zgornji primer z uporabo koncepta zunanjega združevanja. V spodnji kodi bo vrnil vse vrednosti levega in desnega okvira podatkov.
# uvozi knjižnico Pandasuvozi pande kot pd
izdelek = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalke', 'Torba', 'Čevlji', 'Pametni telefon', 'Ščetka za zobe', 'zapestna ura', 'Prenosnik'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Živila', 'Moda', 'Elektronika'],
„Cena“: [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupec = pd.DataFrame (
„ID“: [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
„Starost“: [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalke', 'NA', 'zapestna ura', 'NA', 'Čevlji', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
tiskanje (pd.spajanje (izdelek, stranka, on = 'Product_ID', how = 'external'))
Argument kazalnika nastavite na "True" s. Opazili boste, da je na koncu dodan nov stolpec "_merge".
# uvozi knjižnico Pandasuvozi pande kot pd
izdelek = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalke', 'Torba', 'Čevlji', 'Pametni telefon', 'Ščetka za zobe', 'zapestna ura', 'Prenosnik'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Živila', 'Moda', 'Elektronika'],
„Cena“: [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupec = pd.DataFrame (
„ID“: [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
„Starost“: [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalke', 'NA', 'zapestna ura', 'NA', 'Čevlji', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
tiskanje (pd.spajanje (izdelek, stranka, on = 'Product_ID', kako = 'zunanji', kazalnik = True))
Kot lahko vidite na spodnjem posnetku zaslona, vrednosti stolpcev za spajanje pojasnjujejo, katera vrstica pripada kateremu DataFrame-u.
Levo Pridružite se v Pandah
Levo združi le prikazne vrstice levega okvira DataFrame. Podobno je zunanjemu spoju. Torej spremenite vrednost argumenta »kako« z »levo«. Preizkusite naslednjo kodo, da uresničite idejo Left join:
# uvozi knjižnico Pandasuvozi pande kot pd
izdelek = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalke', 'Torba', 'Čevlji', 'Pametni telefon', 'Ščetka za zobe', 'zapestna ura', 'Prenosnik'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Živila', 'Moda', 'Elektronika'],
„Cena“: [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupec = pd.DataFrame (
„ID“: [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
„Starost“: [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalke', 'NA', 'zapestna ura', 'NA', 'Čevlji', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
tiskanje (pd.spajanje (izdelek, stranka, na = 'Product_ID', kako = 'levo'))
Pridružite se Pandam
Desno združevanje ohrani vse desne vrstice DataFrame na desni, skupaj z vrsticami, ki so pogoste tudi v levem DataFrame. V tem primeru je argument "kako" nastavljen kot "prava" vrednost. Za izvedbo pravilnega koncepta združevanja zaženite naslednjo kodo:
# uvozi knjižnico Pandasuvozi pande kot pd
izdelek = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalke', 'Torba', 'Čevlji', 'Pametni telefon', 'Ščetka za zobe', 'zapestna ura', 'Prenosnik'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Živila', 'Moda', 'Elektronika'],
„Cena“: [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupec = pd.DataFrame (
„ID“: [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
„Starost“: [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalke', 'NA', 'zapestna ura', 'NA', 'Čevlji', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
tiskanje (pd.spajanje (izdelek, stranka, na = 'Product_ID', kako = 'desno'))
Na naslednjem posnetku zaslona lahko vidite rezultat po zagonu zgornje kode:
Združevanje podatkovnih okvirov s pomočjo funkcije Concat ()
Dva okvirja podatkov lahko združite s pomočjo funkcije concat. Osnovna sintaksa funkcije združevanja je podana spodaj:
pd.concat ([df_obj1, df_obj_2]))Dva predmeta DataFrames bosta podana kot argumenta.
Pridružimo se izdelku DataFrames in stranki s pomočjo funkcije concat. Zaženite naslednje vrstice kode, da združite dva okvirja podatkov:
# uvozi knjižnico Pandasuvozi pande kot pd
izdelek = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalke', 'Torba', 'Čevlji', 'Pametni telefon', 'Ščetka za zobe', 'zapestna ura', 'Prenosnik'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Živila', 'Moda', 'Elektronika'],
„Cena“: [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupec = pd.DataFrame (
„ID“: [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
„Starost“: [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalke', 'NA', 'zapestna ura', 'NA', 'Čevlji', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
tiskanje (pd.concat ([izdelek, kupec]))
Zaključek:
V tem članku smo razpravljali o izvajanju funkcije merge (), concat () in pridruževanja v Pandas python. Z uporabo zgornjih metod lahko enostavno združite dva okvirja DataFrames in se naučite. kako v operacijah Pandas izvesti operacije Združevanja "notranja, zunanja, leva in desna". Upajmo, da vas bo ta vadnica vodila pri izvajanju operacij združevanja na različnih vrstah DataFrames. V primeru kakršne koli napake nam sporočite svoje težave.