Šajā rakstā mēs izpētīsim apvienošanas funkcijas, concat funkcijas un dažādu veidu savienojumu darbību izmantošanu Pandas pitonā. Visi piemēri tiks izpildīti, izmantojot pycharm redaktoru. Sāksim ar detaļām!
Apvienošanas funkcijas izmantošana
Tālāk ir sniegta sapludināšanas () sintakses pamata sintakse:
pd.sapludināt (df_obj1, df_obj2, how = 'internal', on = None, left_on = None, right_on = None)Paskaidrosim sīkāku informāciju par parametriem:
Pirmie divi df_obj1 un df_obj2 argumenti ir DataFrame objektu vai tabulu nosaukumi.
“kāParametrs tiek izmantots dažāda veida savienošanas operācijām, piemēram, “kreisais, labais, ārējais un iekšējais”. Apvienošanas funkcija pēc noklusējuma izmanto “iekšējo” savienošanas darbību.
Arguments “Ieslēgts” satur kolonnas nosaukumu, ar kuru tiek veikta savienošanas darbība. Šai kolonnai jābūt abos DataFrame objektos.
Argumentos “left_on” un “right_on” “left_on” ir kolonnas nosaukuma nosaukums kā atslēga kreisajā DataFrame. “Right_on” ir kolonnas nosaukums, ko izmanto kā atslēgu no labā DataFrame.
Lai sīkāk izstrādātu DataFrame pievienošanās koncepciju, esam ņēmuši divus DataFrame objektus - produktu un klientu. Produkta DataFrame satur šādu informāciju:
produkts = pd.DataFrame ('Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['austiņas', 'soma', 'apavi', 'viedtālrunis', 'zobu birste', 'rokas pulkstenis', 'klēpjdators'],
'Kategorija': ['Elektronika', 'Mode', 'Mode', 'Elektronika', 'Pārtikas preces', 'Mode', 'Elektronika'],
'Cena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karači', 'Rawalpindi', 'Islamabad', 'Karači', 'Faisalabad']
)
Klienta DataFrame satur šādu informāciju:
klients = pd.DataFrame (“ID”: [1,2,3,4,5,6,7,8,9],
'Klienta_nosaukums': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
“Vecums”: [20,21,15,10,31,52,15,18,16],
“Produkta ID”: [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['austiņas', 'NA', 'rokas pulkstenis', 'NA', 'apavi', 'viedtālrunis', 'NA', 'NA', 'klēpjdators'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karači', 'Karači', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Pievienojieties DataFrames uz atslēgas
Mēs varam viegli atrast tiešsaistē pārdotus produktus un klientus, kuri tos iegādājās. Tātad, pamatojoties uz atslēgu “Product_ID”, abiem DataFrame mēs esam veikuši iekšējo savienojumu darbību šādi:
# importēt Pandas bibliotēkuimporta pandas kā pd
produkts = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['austiņas', 'soma', 'apavi', 'viedtālrunis', 'zobu birste', 'rokas pulkstenis', 'klēpjdators'],
'Kategorija': ['Elektronika', 'Mode', 'Mode', 'Elektronika', 'Pārtikas preces', 'Mode', 'Elektronika'],
'Cena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karači', 'Rawalpindi', 'Islamabad', 'Karači', 'Faisalabad']
)
klients = pd.DataFrame (
“ID”: [1,2,3,4,5,6,7,8,9],
'Klienta_nosaukums': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
“Vecums”: [20,21,15,10,31,52,15,18,16],
“Product_ID”: [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['austiņas', 'NA', 'rokas pulkstenis', 'NA', 'apavi', 'viedtālrunis', 'NA', 'NA', 'klēpjdators'],
'Pilsēta': ['Lahore', 'Islamabad', 'Faisalabad', 'Karači', 'Karači', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
izdruka (pd.apvienot (produkts, klients, uz = 'Produkta_ID'))
Pēc iepriekš minētā koda palaišanas logā tiek parādīta šāda izeja:
Ja abās DataFrame kolonnās ir atšķirības, skaidri uzrakstiet katras kolonnas nosaukumu ar argumentiem left_on un right_on šādi:
importa pandas kā pdprodukts = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['austiņas', 'soma', 'apavi', 'viedtālrunis', 'zobu birste', 'rokas pulkstenis', 'klēpjdators'],
'Kategorija': ['Elektronika', 'Mode', 'Mode', 'Elektronika', 'Pārtikas preces', 'Mode', 'Elektronika'],
'Cena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karači', 'Rawalpindi', 'Islamabad', 'Karači', 'Faisalabad']
)
klients = pd.DataFrame (
“ID”: [1,2,3,4,5,6,7,8,9],
'Klienta_nosaukums': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
“Vecums”: [20,21,15,10,31,52,15,18,16],
“Product_ID”: [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['austiņas', 'NA', 'rokas pulkstenis', 'NA', 'apavi', 'viedtālrunis', 'NA', 'NA', 'klēpjdators'],
'Pilsēta': ['Lahore', 'Islamabad', 'Faisalabad', 'Karači', 'Karači', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
izdruka (pd.apvienot (produkts, klients, left_on = 'Product_Name', right_on = 'Product_Purchased'))
Uz ekrāna parādīsies šāda izeja:
Pievienojieties DataFrames, izmantojot How Argument
Turpmāk sniegtajos piemēros mēs izskaidrosim četrus savienojumu darbību veidus ar Pandas DataFrames:
- Iekšējā pievienošanās
- Ārējā pievienošanās
- Kreisais pievienošanās
- Tiesības pievienoties
Iekšējais pievienošanās Pandas
Mēs varam veikt iekšēju savienojumu ar vairākiem taustiņiem. Lai parādītu sīkāku informāciju par produkta pārdošanu, paņemiet Product_ID, Seller_City no produkta DataFrame un Product_ID un “Customer_City” no klienta DataFrame, lai atrastu, ka pārdevējs vai klients pieder tai pašai pilsētai. Ievietojiet šādas koda rindas:
# importēt Pandas bibliotēkuimporta pandas kā pd
produkts = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['austiņas', 'soma', 'apavi', 'viedtālrunis', 'zobu birste', 'rokas pulkstenis', 'klēpjdators'],
'Kategorija': ['Elektronika', 'Mode', 'Mode', 'Elektronika', 'Pārtikas preces', 'Mode', 'Elektronika'],
'Cena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karači', 'Rawalpindi', 'Islamabad', 'Karači', 'Faisalabad']
)
klients = pd.DataFrame (
“ID”: [1,2,3,4,5,6,7,8,9],
'Klienta_nosaukums': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
“Vecums”: [20,21,15,10,31,52,15,18,16],
“Product_ID”: [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['austiņas', 'NA', 'rokas pulkstenis', 'NA', 'apavi', 'viedtālrunis', 'NA', 'NA', 'klēpjdators'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karači', 'Karači', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
izdruka (pd.sapludināt (produkts, klients, kā = 'iekšējais', pa kreisi_ uz = ['produkta_ID', 'pārdevēja_pilsēta'], pa labi_uz = ['produkta_ID', 'pircēja_pilsēta']))
Pēc iepriekš minētā koda palaišanas logā tiek parādīts šāds rezultāts:
Pilna / ārēja pievienošanās Pandas
Ārējais savienojums atgriež gan labās, gan kreisās DataFrames vērtības, kurām ir atbilstības. Tātad, lai ieviestu ārējo savienojumu, iestatiet argumentu “kā” kā ārēju. Pārveidosim iepriekš minēto piemēru, izmantojot ārējā savienojuma koncepciju. Zemāk esošajā kodā tas atgriezīs visas vērtības gan kreisajā, gan labajā DataFrame.
# importēt Pandas bibliotēkuimporta pandas kā pd
produkts = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['austiņas', 'soma', 'apavi', 'viedtālrunis', 'zobu birste', 'rokas pulkstenis', 'klēpjdators'],
'Kategorija': ['Elektronika', 'Mode', 'Mode', 'Elektronika', 'Pārtikas preces', 'Mode', 'Elektronika'],
'Cena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karači', 'Rawalpindi', 'Islamabad', 'Karači', 'Faisalabad']
)
klients = pd.DataFrame (
“ID”: [1,2,3,4,5,6,7,8,9],
'Klienta_nosaukums': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
“Vecums”: [20,21,15,10,31,52,15,18,16],
“Product_ID”: [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['austiņas', 'NA', 'rokas pulkstenis', 'NA', 'apavi', 'viedtālrunis', 'NA', 'NA', 'klēpjdators'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karači', 'Karači', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
izdruka (pd.apvienot (produkts, klients, uz = 'Produkta_ID', kā = 'ārējais'))
Iestatiet indikatora argumentu kā “True” s. Jūs ievērosiet, ka beigās ir pievienota jaunā sleja “_merge”.
# importēt Pandas bibliotēkuimporta pandas kā pd
produkts = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['austiņas', 'soma', 'apavi', 'viedtālrunis', 'zobu birste', 'rokas pulkstenis', 'klēpjdators'],
'Kategorija': ['Elektronika', 'Mode', 'Mode', 'Elektronika', 'Pārtikas preces', 'Mode', 'Elektronika'],
'Cena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karači', 'Rawalpindi', 'Islamabad', 'Karači', 'Faisalabad']
)
klients = pd.DataFrame (
“ID”: [1,2,3,4,5,6,7,8,9],
'Klienta_nosaukums': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
“Vecums”: [20,21,15,10,31,52,15,18,16],
“Product_ID”: [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['austiņas', 'NA', 'rokas pulkstenis', 'NA', 'apavi', 'viedtālrunis', 'NA', 'NA', 'klēpjdators'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karači', 'Karači', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
izdruka (pd.apvienot (produkts, klients, uz = 'Produkta_ID', kā = 'ārējais', rādītājs = Patiesība))
Kā redzat zemāk redzamajā ekrānuzņēmumā, sapludināšanas kolonnu vērtības izskaidro, kura rinda kurai DataFrame pieder.
Pa kreisi pievienojies Pandās
Kreisais savienojums parāda tikai kreisā DataFrame rindas. Tas ir līdzīgs ārējam savienojumam. Tātad, mainiet argumenta “kā” vērtību ar “pa kreisi”. Izmēģiniet šo kodu, lai īstenotu kreisās pievienošanās ideju:
# importēt Pandas bibliotēkuimporta pandas kā pd
produkts = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['austiņas', 'soma', 'apavi', 'viedtālrunis', 'zobu birste', 'rokas pulkstenis', 'klēpjdators'],
'Kategorija': ['Elektronika', 'Mode', 'Mode', 'Elektronika', 'Pārtikas preces', 'Mode', 'Elektronika'],
'Cena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karači', 'Rawalpindi', 'Islamabad', 'Karači', 'Faisalabad']
)
klients = pd.DataFrame (
“ID”: [1,2,3,4,5,6,7,8,9],
'Klienta_nosaukums': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
“Vecums”: [20,21,15,10,31,52,15,18,16],
“Product_ID”: [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['austiņas', 'NA', 'rokas pulkstenis', 'NA', 'apavi', 'viedtālrunis', 'NA', 'NA', 'klēpjdators'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karači', 'Karači', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
izdruka (pd.apvienot (produkts, klients, uz = 'Produkta_ID', kā = 'pa kreisi'))
Labi pievienojieties Pandas
Labais savienojums saglabā visas labās DataFrame rindas pa labi kopā ar rindām, kas ir kopīgas arī kreisajā DataFrame. Šajā gadījumā arguments “kā” tiek iestatīts kā “pareizā” vērtība. Lai ieviestu pareizās pievienošanās koncepciju, palaidiet šo kodu:
# importēt Pandas bibliotēkuimporta pandas kā pd
produkts = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['austiņas', 'soma', 'apavi', 'viedtālrunis', 'zobu birste', 'rokas pulkstenis', 'klēpjdators'],
'Kategorija': ['Elektronika', 'Mode', 'Mode', 'Elektronika', 'Pārtikas preces', 'Mode', 'Elektronika'],
'Cena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karači', 'Rawalpindi', 'Islamabad', 'Karači', 'Faisalabad']
)
klients = pd.DataFrame (
“ID”: [1,2,3,4,5,6,7,8,9],
'Klienta_nosaukums': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
“Vecums”: [20,21,15,10,31,52,15,18,16],
“Produkta ID”: [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['austiņas', 'NA', 'rokas pulkstenis', 'NA', 'apavi', 'viedtālrunis', 'NA', 'NA', 'klēpjdators'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karači', 'Karači', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
izdruka (pd.apvienot (produkts, klients, uz = 'Produkta_ID', kā = 'Pareizi'))
Šajā ekrānuzņēmumā jūs varat redzēt rezultātu pēc iepriekš minētā koda izpildīšanas:
DataFrames pievienošana, izmantojot funkciju Concat ()
Divus DataFrames var savienot, izmantojot funkciju concat. Savienošanas funkcijas sintakse ir sniegta zemāk:
pd.concat ([df_obj1, df_obj_2]))Divi DataFrames objekti tiks nodoti kā argumenti.
Pievienosimies gan DataFrames produktam, gan klientam, izmantojot funkciju concat. Lai pievienotos diviem DataFrames, palaidiet šādas koda rindas:
# importēt Pandas bibliotēkuimporta pandas kā pd
produkts = pd.DataFrame (
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['austiņas', 'soma', 'apavi', 'viedtālrunis', 'zobu birste', 'rokas pulkstenis', 'klēpjdators'],
'Kategorija': ['Elektronika', 'Mode', 'Mode', 'Elektronika', 'Pārtikas preces', 'Mode', 'Elektronika'],
'Cena': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karači', 'Rawalpindi', 'Islamabad', 'Karači', 'Faisalabad']
)
klients = pd.DataFrame (
“ID”: [1,2,3,4,5,6,7,8,9],
'Klienta_nosaukums': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
“Vecums”: [20,21,15,10,31,52,15,18,16],
“Product_ID”: [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['austiņas', 'NA', 'rokas pulkstenis', 'NA', 'apavi', 'viedtālrunis', 'NA', 'NA', 'klēpjdators'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karači', 'Karači', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
izdruka (pd.concat ([produkts, klients]))
Secinājums:
Šajā rakstā mēs esam apsprieduši sapludināšanas () funkcijas, funkciju concat () ieviešanas un pievienošanās darbību Pandas pitonā. Izmantojot iepriekš minētās metodes, jūs varat viegli savienot divus DataFrame un iemācīties. kā Pandas izpildīt Join operācijas “iekšējais, ārējais, kreisais un labais”. Cerams, ka šī apmācība palīdzēs jums ieviest pievienošanās operācijas dažāda veida DataFrames. Lūdzu, informējiet mūs par savām grūtībām kļūdu gadījumā.