U ovom ćemo članku istražiti upotrebu funkcije spajanja, funkcije concat i različitih vrsta operacija spajanja u Pandas pythonu. Svi će se primjeri izvoditi putem uređivača pycharm. Krenimo s detaljima!
Upotreba funkcije spajanja
Osnovna uobičajena sintaksa funkcije merge () dana je u nastavku:
pd.spajanje (df_obj1, df_obj2, kako = 'unutarnji', on = Nijedan, lijevi_on = Nijedan, desni_on = Nema)Objasnimo detalje parametara:
Prva dva df_obj1 i df_obj2 Argumenti su imena DataFrame objekata ili tablica.
"kakoParametar "koristi se za različite vrste operacija spajanja kao što su" lijevo, desno, vanjsko i unutarnje ". Funkcija spajanja prema zadanim postavkama koristi operaciju "unutarnjeg" spajanja.
Argument "na" sadrži naziv stupca na kojem se izvodi operacija spajanja. Ovaj stupac mora biti prisutan u oba DataFrame objekta.
U argumentima "left_on" i "right_on", "left_on" je naziv naziva stupca kao ključ u lijevom DataFrame-u. "Right_on" je naziv stupca koji se koristi kao ključ desnog DataFrame-a.
Da bismo razradili koncept pridruživanja DataFramesu, uzeli smo dva DataFrame objekta - proizvod i kupac. Sljedeći su detalji prisutni u DataFrame-u proizvoda:
proizvod = pd.DataFrame ('Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalice', 'Torba', 'Cipele', 'Smartphone', 'četkica za zube', 'ručni sat', 'Laptop'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Namirnice', 'Moda', 'Elektronika'],
'Cijena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Grad prodavatelja': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
Korisnički DataFrame sadrži sljedeće detalje:
kupac = pd.DataFrame ('ID': [1,2,3,4,5,6,7,8,9],
'Korisničko ime': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Dob': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalice', 'NA', 'ručni sat', 'NA', 'Cipele', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Pridružite se okvirima podataka na ključu
Lako možemo pronaći proizvode koji se prodaju na mreži i kupce koji su ih kupili. Dakle, na temelju ključa "Product_ID", izvršili smo operaciju unutarnjeg spajanja na oba okvira podataka kako slijedi:
# uvezi knjižnicu Pandasuvoziti pande kao pd
proizvod = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalice', 'Torba', 'Cipele', 'Smartphone', 'četkica za zube', 'ručni sat', 'Laptop'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Namirnice', 'Moda', 'Elektronika'],
'Cijena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Grad prodavatelja': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupac = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Korisničko ime': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Dob': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalice', 'NA', 'ručni sat', 'NA', 'Cipele', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Grad': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
ispis (pd.spajanje (proizvod, kupac, na = 'Product_ID'))
Sljedeći izlaz prikazuje se na prozoru nakon pokretanja gornjeg koda:
Ako su stupci različiti u oba okvira podataka, tada izričito napišite ime svakog stupca argumentima left_on i right_on kako slijedi:
uvoziti pande kao pdproizvod = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalice', 'Torba', 'Cipele', 'Pametni telefon', 'četkica za zube', 'ručni sat', 'Laptop'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Namirnice', 'Moda', 'Elektronika'],
'Cijena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Grad prodavatelja': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupac = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Korisničko ime': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Dob': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalice', 'NA', 'ručni sat', 'NA', 'Cipele', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Grad': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
ispis (pd.spajanje (proizvod, kupac, left_on = 'Product_Name', right_on = 'Product_Purchased'))
Na ekranu će se prikazati sljedeći izlaz:
Pridružite se DataFrames-ima koristeći How Argument
U sljedećim primjerima objasnit ćemo četiri vrste operacija pridruživanja na Pandas DataFrames:
- Unutarnje pridruživanje
- Vanjsko pridruživanje
- Lijevo Pridružite se
- Pravo pridruživanje
Unutarnje pridruživanje u Pandama
Možemo izvesti unutarnje spajanje na više tipki. Da biste prikazali više detalja o prodaji proizvoda, uzmite Product_ID, Seller_City iz proizvoda DataFrame i Product_ID i "Customer_City" iz korisničkog DataFramea kako biste utvrdili pripada li prodavatelj ili kupac istom gradu. Primijenite sljedeće retke koda:
# uvezi knjižnicu Pandasuvoziti pande kao pd
proizvod = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalice', 'Torba', 'Cipele', 'Smartphone', 'četkica za zube', 'ručni sat', 'Laptop'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Namirnice', 'Moda', 'Elektronika'],
'Cijena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Grad prodavatelja': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupac = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Korisničko ime': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Dob': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalice', 'NA', 'ručni sat', 'NA', 'Cipele', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
ispis (pd.spajanje (proizvod, kupac, kako = 'unutarnji', left_on = ['Product_ID', 'Seller_City'], right_on = ['Product_ID', 'Customer_City']))
Sljedeći rezultat prikazuje se na prozoru nakon pokretanja gornjeg koda:
Potpuno / vanjsko spajanje u Pandama
Vanjska spajanja vraćaju i desnu i lijevu vrijednost DataFrames vrijednosti, koje imaju podudaranja. Dakle, da biste implementirali vanjsko spajanje, postavite argument "kako" kao vanjski. Izmijenimo gornji primjer korištenjem koncepta vanjskog spajanja. U donjem kodu vratit će sve vrijednosti i lijevog i desnog okvira podataka.
# uvezi knjižnicu Pandasuvoziti pande kao pd
proizvod = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalice', 'Torba', 'Cipele', 'Pametni telefon', 'četkica za zube', 'ručni sat', 'Laptop'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Namirnice', 'Moda', 'Elektronika'],
'Cijena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Grad prodavatelja': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupac = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Korisničko ime': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Dob': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalice', 'NA', 'ručni sat', 'NA', 'Cipele', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
ispis (pd.spajanje (proizvod, kupac, na = 'Product_ID', kako = 'vanjski'))
Postavite argument indikatora na "True" s. Primijetit ćete da je novi stupac "_merge" dodan na kraju.
# uvezi knjižnicu Pandasuvoziti pande kao pd
proizvod = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalice', 'Torba', 'Cipele', 'Pametni telefon', 'četkica za zube', 'ručni sat', 'Laptop'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Namirnice', 'Moda', 'Elektronika'],
'Cijena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Grad prodavatelja': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupac = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Korisničko ime': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Dob': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalice', 'NA', 'ručni sat', 'NA', 'Cipele', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
ispis (pd.spajanje (proizvod, kupac, na = 'Product_ID', kako = 'vanjski', pokazatelj = True))
Kao što možete vidjeti na donjoj snimci zaslona, vrijednosti stupca spajanja objašnjavaju koji redak pripada kojem DataFrame-u.
Lijevo se pridružilo Pandama
Lijevo spajanje prikazuje samo retke lijevog DataFrame-a. Sličan je vanjskom spoju. Dakle, promijenite vrijednost argumenta 'kako' s "lijevo". Isprobajte sljedeći kod za provedbu ideje o lijevom spajanju:
# uvezi knjižnicu Pandasuvoziti pande kao pd
proizvod = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalice', 'Torba', 'Cipele', 'Pametni telefon', 'četkica za zube', 'ručni sat', 'Laptop'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Namirnice', 'Moda', 'Elektronika'],
'Cijena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Grad prodavatelja': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupac = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Korisničko ime': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Dob': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalice', 'NA', 'ručni sat', 'NA', 'Cipele', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
ispis (pd.spajanje (proizvod, kupac, na = 'Product_ID', kako = 'lijevo'))
Pravo se pridružite Pandama
Desno spajanje drži sve desne redove DataFramea udesno, zajedno s redovima koji su također uobičajeni u lijevom DataFrameu. U ovom je slučaju argument "kako" postavljen kao "ispravna" vrijednost. Pokrenite sljedeći kod za implementaciju ispravnog koncepta spajanja:
# uvezi knjižnicu Pandasuvoziti pande kao pd
proizvod = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalice', 'Torba', 'Cipele', 'Pametni telefon', 'četkica za zube', 'ručni sat', 'Laptop'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Namirnice', 'Moda', 'Elektronika'],
'Cijena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Grad prodavatelja': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupac = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Korisničko ime': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Dob': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalice', 'NA', 'ručni sat', 'NA', 'Cipele', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
ispis (pd.spajanje (proizvod, kupac, na = 'Product_ID', kako = 'u redu'))
Na sljedećem snimku zaslona možete vidjeti rezultat nakon pokretanja gornjeg koda:
Spajanje okvira podataka pomoću funkcije Concat ()
Dva okvira podataka mogu se spojiti pomoću funkcije concat. Osnovna sintaksa funkcije spajanja dana je u nastavku:
pd.concat ([df_obj1, df_obj_2]))Dva objekta DataFrames proslijedit će se kao argumenti.
Pridružimo se i DataFrames proizvodu i kupcu putem funkcije concat. Pokrenite sljedeće retke koda da biste spojili dva okvira podataka:
# uvezi knjižnicu Pandasuvoziti pande kao pd
proizvod = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['slušalice', 'Torba', 'Cipele', 'Smartphone', 'četkica za zube', 'ručni sat', 'Laptop'],
'Kategorija': ['Elektronika', 'Moda', 'Moda', 'Elektronika', 'Namirnice', 'Moda', 'Elektronika'],
'Cijena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Grad prodavatelja': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
kupac = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Korisničko ime': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Dob': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['slušalice', 'NA', 'ručni sat', 'NA', 'Cipele', 'Pametni telefon', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
ispis (pd.concat ([proizvod, kupac]))
Zaključak:
U ovom smo članku raspravljali o implementaciji funkcije merge (), concat () i pridruživanja u Pandas python. Koristeći gornje metode, lako možete pridružiti dva okvira podataka i naučiti. kako implementirati operacije pridruživanja „unutarnje, vanjsko, lijevo i desno“ u Pandama. Nadamo se da će vas ovaj vodič voditi u provedbi operacija spajanja na različitim vrstama DataFrames-a. Obavijestite nas o svojim poteškoćama u slučaju bilo kakve pogreške.