pandy

Jak se připojit k DataFrames v Pandas Python?

Jak se připojit k DataFrames v Pandas Python?
Pandas DataFrame je dvourozměrná (2D) datová struktura, která je zarovnána do tabulkového formátu. Tyto DataFrames lze kombinovat pomocí různých metod, jako je concat (), merge () a spojení. Pandy mají vysoký výkon a plně vybavené operace spojení, které se podobají relační databázi SQL. Pomocí funkce sloučení lze mezi objekty DataFrames implementovat operace spojení.

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 Pandas
importovat 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 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“],
'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í 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 Pandas
importovat 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 Pandas
importovat 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 Pandas
importovat 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 Pandas
importovat 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 Pandas
importovat 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 Pandas
importovat 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.

Hry Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Úvod do hry Civilization 6 je moderní pojetí klasického konceptu představeného v sérii her Age of Empires. Myšlenka byla docela jednoduchá; začali bys...
Hry Jak nainstalovat a hrát Doom na Linuxu
Jak nainstalovat a hrát Doom na Linuxu
Úvod do Doom Série Doom vznikla v 90. letech po vydání původního Doomu. Byl to okamžitý hit a od té doby herní série získala řadu ocenění a původní Do...
Hry Vulkan pro uživatele Linuxu
Vulkan pro uživatele Linuxu
S každou novou generací grafických karet vidíme, že vývojáři her posouvají hranice grafické věrnosti a přibližují se k fotorealismu. Ale navzdory vešk...