V tomto článku prozkoumáme použití funkce sloučení, funkce concat a různých typů operací spojení v pythonu Pandas. Všechny příklady budou provedeny prostřednictvím editoru pycharm. Začněme podrobnostmi!
Použití funkce sloučení
Níže je uvedena základní běžně používaná syntaxe funkce merge ():
pd.sloučit (df_obj1, df_obj2, how = 'internal', on = None, left_on = None, right_on = None)Vysvětlíme podrobnosti parametrů:
První dva df_obj1 a df_obj2 argumenty jsou názvy objektů nebo tabulek DataFrame.
„jak“Parametr se používá pro různé typy operací spojení, jako je„ levý, pravý, vnější a vnitřní “. Funkce sloučení používá ve výchozím nastavení operaci „vnitřní“ spojení.
Argument "na" obsahuje název sloupce, u kterého se provádí operace spojení. Tento sloupec musí být přítomen v obou objektech DataFrame.
V argumentech „left_on“ a „right_on“ je „left_on“ název názvu sloupce jako klíče v levém DataFrame. „Right_on“ je název sloupce použitého jako klíč z pravého DataFrame.
Abychom rozvinuli koncept spojování DataFrames, vzali jsme dva objekty DataFrame - produkt a zákazník. V produktu DataFrame jsou k dispozici následující podrobnosti:
product = pd.DataFrame („ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„sluchátka“, „taška“, „boty“, „smartphone“, „zubní kartáček“, „náramkové hodinky“, „notebook“],
„Kategorie“: [„Elektronika“, „Móda“, „Móda“, „Elektronika“, „Potraviny“, „Móda“, „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']
)
DataFrame zákazníka obsahuje následující podrobnosti:
zákazník = pd.DataFrame ('ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Věk': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„sluchátka“, „NA“, „náramkové hodinky“, „NA“, „boty“, „Smartphone“, „NA“, „NA“, „notebook“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
Připojte se k DataFrames na klíči
Můžeme snadno najít produkty prodávané online a zákazníky, kteří je zakoupili. Takže na základě klíče „Product_ID“ jsme provedli operaci vnitřního spojení na obou DataFrames následujícím způsobem:
# importovat knihovnu Pandasimportovat pandy jako pd
product = pd.DataFrame (
'Product_ID': [101 102 103 103 104 105 106 106],
„Product_Name“: [„sluchátka“, „taška“, „boty“, „smartphone“, „zubní kartáček“, „náramkové hodinky“, „notebook“],
„Kategorie“: [„Elektronika“, „Móda“, „Móda“, „Elektronika“, „Potraviny“, „Móda“, „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']
)
zákazník = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Věk': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„sluchátka“, „NA“, „náramkové hodinky“, „NA“, „boty“, „Smartphone“, „NA“, „NA“, „notebook“],
'City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tisk (pd.merge (product, customer, on = 'Product_ID'))
Po spuštění výše uvedeného kódu se v okně zobrazí následující výstup:
Pokud jsou sloupce v obou DataFrames odlišné, pak explicitně napište název každého sloupce argumenty left_on a right_on takto:
importovat pandy jako pdproduct = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„sluchátka“, „taška“, „boty“, „smartphone“, „zubní kartáček“, „náramkové hodinky“, „notebook“],
„Kategorie“: [„Elektronika“, „Móda“, „Móda“, „Elektronika“, „Potraviny“, „Móda“, „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']
)
zákazník = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Věk': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„sluchátka“, „NA“, „náramkové hodinky“, „NA“, „boty“, „Smartphone“, „NA“, „NA“, „notebook“],
'City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tisk (pd.sloučit (produkt, zákazník, left_on = 'Product_Name', right_on = 'Product_Purchased'))
Na obrazovce se zobrazí následující výstup:
Připojte se k DataFrames pomocí How Argument
V následujících příkladech vysvětlíme čtyři typy operací spojení na Pandas DataFrames:
- Vnitřní spojení
- Vnější připojení
- Vlevo se připojte
- Správně se připojte
Vnitřní Přidejte se k Pandám
Můžeme provést vnitřní spojení na více klíčích. Chcete-li zobrazit více podrobností o prodeji produktu, vezměte Product_ID, Seller_City z DataFrame produktu a Product_ID a „Customer_City“ ze zákaznického DataFrame a zjistěte, že buď prodejce, nebo zákazník patří do stejného města. Implementujte následující řádky kódu:
# importovat knihovnu Pandasimportovat pandy jako pd
product = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„sluchátka“, „taška“, „boty“, „smartphone“, „zubní kartáček“, „náramkové hodinky“, „notebook“],
„Kategorie“: [„Elektronika“, „Móda“, „Móda“, „Elektronika“, „Potraviny“, „Móda“, „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']
)
zákazník = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Věk': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„sluchátka“, „NA“, „náramkové hodinky“, „NA“, „boty“, „Smartphone“, „NA“, „NA“, „notebook“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tisk (pd.merge (product, customer, how = 'internal', left_on = ['Product_ID', 'Seller_City'], right_on = ['Product_ID', 'Customer_City']))
Po spuštění výše uvedeného kódu se v okně zobrazí následující výsledek:
Úplné / vnější spojení v Pandách
Vnější spojení vrací hodnoty DataFrames vpravo i vlevo, které mají shodné hodnoty. Chcete-li tedy implementovat vnější spojení, nastavte argument „jak“ jako vnější. Pojďme upravit výše uvedený příklad pomocí konceptu vnějšího spojení. V níže uvedeném kódu vrátí všechny hodnoty levého i pravého DataFrames.
# importovat knihovnu Pandasimportovat pandy jako pd
product = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„sluchátka“, „taška“, „boty“, „smartphone“, „zubní kartáček“, „náramkové hodinky“, „notebook“],
„Kategorie“: [„Elektronika“, „Móda“, „Móda“, „Elektronika“, „Potraviny“, „Móda“, „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']
)
zákazník = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Věk': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„sluchátka“, „NA“, „náramkové hodinky“, „NA“, „boty“, „Smartphone“, „NA“, „NA“, „notebook“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tisk (pd.sloučit (produkt, zákazník, on = 'Product_ID', how = 'vnější'))
Nastavte argument indikátoru na „True“ s. Všimnete si, že na konec je přidán nový sloupec „_merge“.
# importovat knihovnu Pandasimportovat pandy jako pd
product = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„sluchátka“, „taška“, „boty“, „smartphone“, „zubní kartáček“, „náramkové hodinky“, „notebook“],
„Kategorie“: [„Elektronika“, „Móda“, „Móda“, „Elektronika“, „Potraviny“, „Móda“, „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']
)
zákazník = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Věk': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„sluchátka“, „NA“, „náramkové hodinky“, „NA“, „boty“, „Smartphone“, „NA“, „NA“, „notebook“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tisk (pd.sloučit (produkt, zákazník, on = 'Product_ID', how = 'vnější', indikátor = True))
Jak můžete vidět na následujícím snímku obrazovky, hodnoty sloupce sloučení vysvětlují, který řádek patří ke kterému DataFrame.
Vlevo Připojte se k Pandám
Levé spojení zobrazí pouze řádky levého DataFrame. Je to podobné jako u vnějšího spojení. Takže změňte hodnotu argumentu „jak“ na „vlevo“. Vyzkoušejte následující kód k implementaci myšlenky Left join:
# importovat knihovnu Pandasimportovat pandy jako pd
product = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„sluchátka“, „taška“, „boty“, „smartphone“, „zubní kartáček“, „náramkové hodinky“, „notebook“],
„Kategorie“: [„Elektronika“, „Móda“, „Móda“, „Elektronika“, „Potraviny“, „Móda“, „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']
)
zákazník = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Věk': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„sluchátka“, „NA“, „náramkové hodinky“, „NA“, „boty“, „Smartphone“, „NA“, „NA“, „notebook“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tisk (pd.merge (product, customer, on = 'Product_ID', how = 'left'))
Správně se připojte k pandám
Pravé spojení udržuje všechny pravé řádky DataFrame vpravo spolu s řádky, které jsou také běžné v levém DataFrame. V tomto případě je argument „jak“ nastaven jako „správná“ hodnota. Spuštěním následujícího kódu implementujte koncept správného spojení: Run the following code to implement the right join concept:
# importovat knihovnu Pandasimportovat pandy jako pd
product = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„sluchátka“, „taška“, „boty“, „smartphone“, „zubní kartáček“, „náramkové hodinky“, „notebook“],
„Kategorie“: [„Elektronika“, „Móda“, „Móda“, „Elektronika“, „Potraviny“, „Móda“, „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']
)
zákazník = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Věk': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„sluchátka“, „NA“, „náramkové hodinky“, „NA“, „boty“, „Smartphone“, „NA“, „NA“, „notebook“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tisk (pd.merge (product, customer, on = 'Product_ID', how = 'right'))
Na následujícím snímku obrazovky můžete vidět výsledek po spuštění výše uvedeného kódu:
Spojování DataFrames pomocí funkce Concat ()
Dva DataFrames lze spojit pomocí funkce concat. Níže je uvedena základní syntaxe funkce zřetězení:
pd.concat ([df_obj1, df_obj_2]))Jako argumenty budou předány dva objekty DataFrames.
Spojme produkt DataFrames a zákazníka prostřednictvím funkce concat. Spusťte následující řádky kódu a spojte dva DataFrames:
# importovat knihovnu Pandasimportovat pandy jako pd
product = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„sluchátka“, „taška“, „boty“, „smartphone“, „zubní kartáček“, „náramkové hodinky“, „notebook“],
„Kategorie“: [„Elektronika“, „Móda“, „Móda“, „Elektronika“, „Potraviny“, „Móda“, „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']
)
zákazník = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Věk': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„sluchátka“, „NA“, „náramkové hodinky“, „NA“, „boty“, „Smartphone“, „NA“, „NA“, „notebook“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tisk (pd.concat ([produkt, zákazník]))
Závěr:
V tomto článku jsme diskutovali o implementaci funkcí merge (), concat () a spojení v Pandas python. Pomocí výše uvedených metod můžete snadno spojit dva DataFrames a naučit se. jak implementovat operace spojení „vnitřní, vnější, levý a pravý“ v Pandas. Doufejme, že vás tento kurz provede implementací operací spojení na různých typech DataFrames. Sdělte nám prosím své potíže v případě jakékoli chyby.