V tomto článku sa budeme venovať použitiu funkcií zlúčenia, funkcie concat a rôznych typov operácií spojenia v Pandas python. Všetky príklady sa vykonajú prostredníctvom editora pycharm. Začnime podrobnosťami!
Použitie funkcie zlúčenia
Nižšie je uvedená základná bežne používaná syntax funkcie merge ():
pd.zlúčiť (df_obj1, df_obj2, how = 'internal', on = None, left_on = None, right_on = None)Vysvetlíme si podrobnosti parametrov:
Prví dvaja df_obj1 a df_obj2 argumenty sú názvy objektov alebo tabuliek DataFrame.
„akoParameter sa používa pre rôzne typy operácií spojenia, ako napríklad „ľavý, pravý, vonkajší a vnútorný“. Funkcia zlúčenia predvolene používa operáciu „vnútorného“ spojenia.
Tvrdenie „Na“ obsahuje názov stĺpca, na ktorom sa vykonáva operácia spojenia. Tento stĺpec musí byť v obidvoch objektoch DataFrame.
V argumentoch „left_on“ a „right_on“ je „left_on“ názov názvu stĺpca ako kľúča v ľavom DataFrame. „Right_on“ je názov stĺpca použitého ako kľúč z pravého dátového rámca.
Na rozpracovanie koncepcie spojenia s DataFrames sme vzali dva objekty DataFrame - produkt a zákazník. V dátovom rámci produktu sú uvedené nasledujúce podrobnosti:
produkt = pd.DataFrame („Product_ID“: [101 102 103 103 104 105 106 107],
„Product_Name“: [„slúchadlá“, „taška“, „topánky“, „smartphone“, „kefka na zuby“, „náramkové hodinky“, „notebook“],
„Kategória“: [„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ícky DataFrame obsahuje nasledujúce 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'],
„Vek“: [20,21,15,10,31,52,15,18,16],
„Product_ID“: [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„slúchadlá“, „NA“, „náramkové hodinky“, „NA“, „topánky“, „Smartphone“, „NA“, „NA“, „laptop“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
Pripojte sa k DataFrames na kľúči
Ľahko nájdeme výrobky predávané online a zákazníkov, ktorí si ich kúpili. Takže na základe kľúča „Product_ID“ sme vykonali operáciu vnútorného spojenia na oboch DataFrames nasledovne:
# importovať knižnicu Pandasimportovať pandy ako pd
produkt = pd.DataFrame (
„Product_ID“: [101 102 103 103 104 105 106 107],
„Product_Name“: [„slúchadlá“, „taška“, „topánky“, „smartphone“, „kefka na zuby“, „náramkové hodinky“, „notebook“],
„Kategória“: [„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'],
„Vek“: [20,21,15,10,31,52,15,18,16],
„Product_ID“: [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„slúchadlá“, „NA“, „náramkové hodinky“, „NA“, „topánky“, „Smartphone“, „NA“, „NA“, „laptop“],
„Mesto“: [„Láhaur“, „Islamabad“, „Faisalabad“, „Karáčí“, „Karáčí“, „Islamabad“, „Rawalpindi“, „Islamabad“,
„Lahore“]
)
tlač (pd.zlúčiť (produkt, zákazník, on = 'Product_ID'))
Po spustení vyššie uvedeného kódu sa v okne zobrazí nasledujúci výstup:
Ak sú stĺpce odlišné v oboch údajových rámcoch, potom explicitne napíšte názov každého stĺpca pomocou argumentov left_on a right_on takto:
importovať pandy ako pdprodukt = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„slúchadlá“, „taška“, „topánky“, „smartphone“, „kefka na zuby“, „náramkové hodinky“, „notebook“],
„Kategória“: [„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'],
„Vek“: [20,21,15,10,31,52,15,18,16],
„Product_ID“: [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„slúchadlá“, „NA“, „náramkové hodinky“, „NA“, „topánky“, „Smartphone“, „NA“, „NA“, „laptop“],
„Mesto“: [„Láhaur“, „Islamabad“, „Faisalabad“, „Karáči“, „Karáči“, „Islamabad“, „Rawalpindi“, „Islamabad“,
„Lahore“]
)
tlač (pd.zlúčiť (produkt, zákazník, left_on = 'Product_Name', right_on = 'Product_Purchased'))
Na obrazovke sa zobrazí nasledujúci výstup:
Pripojte sa k údajovým rámcom pomocou argumentu How Argument
V nasledujúcich príkladoch si vysvetlíme štyri typy operácií spojenia na Pandas DataFrames:
- Vnútorné pripojenie
- Vonkajší spoj
- Vľavo Pripojiť sa
- Správne sa pripojte
Vnútorné Pripojte sa k Pandám
Vnútorné spojenie môžeme vykonať na viacerých klávesoch. Ak chcete zobraziť viac podrobností o predaji produktu, vezmite z parametra ProductFID, Seller_City z produktu DataFrame a Product_ID a výraz „Customer_City“ z dátového rámca zákazníka, aby ste zistili, že predajca alebo zákazník patrí do rovnakého mesta. Implementujte nasledujúce riadky kódu:
# importovať knižnicu Pandasimportovať pandy ako pd
produkt = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„slúchadlá“, „taška“, „topánky“, „smartphone“, „kefka na zuby“, „náramkové hodinky“, „notebook“],
„Kategória“: [„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'],
„Vek“: [20,21,15,10,31,52,15,18,16],
„Product_ID“: [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„slúchadlá“, „NA“, „náramkové hodinky“, „NA“, „topánky“, „Smartphone“, „NA“, „NA“, „laptop“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tlač (pd.zlúčiť (produkt, zákazník, how = 'internal', left_on = ['Product_ID', 'Seller_City'], right_on = ['Product_ID', 'Customer_City']))
Po spustení vyššie uvedeného kódu sa v okne zobrazí nasledujúci výsledok:
Úplné / vonkajšie spojenie v pandách
Vonkajšie spojenia vrátia pravé aj ľavé hodnoty DataFrames, ktoré majú buď zhody. Takže, aby ste implementovali vonkajšie spojenie, nastavte argument „ako“ ako vonkajší. Upravme vyššie uvedený príklad pomocou konceptu vonkajšieho spojenia. V nižšie uvedenom kóde vráti všetky hodnoty ľavého aj pravého údajového rámca.
# importovať knižnicu Pandasimportovať pandy ako pd
produkt = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„slúchadlá“, „taška“, „topánky“, „smartphone“, „kefka na zuby“, „náramkové hodinky“, „notebook“],
„Kategória“: [„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'],
„Vek“: [20,21,15,10,31,52,15,18,16],
„Product_ID“: [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„slúchadlá“, „NA“, „náramkové hodinky“, „NA“, „topánky“, „Smartphone“, „NA“, „NA“, „laptop“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tlač (pd.zlúčiť (produkt, zákazník, on = 'Product_ID', how = 'vonkajší'))
Nastavte argument indikátora na „True“ s. Všimnete si, že na koniec je pridaný nový stĺpec „_merge“.
# importovať knižnicu Pandasimportovať pandy ako pd
produkt = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„slúchadlá“, „taška“, „topánky“, „smartphone“, „kefka na zuby“, „náramkové hodinky“, „notebook“],
„Kategória“: [„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'],
„Vek“: [20,21,15,10,31,52,15,18,16],
„Product_ID“: [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„slúchadlá“, „NA“, „náramkové hodinky“, „NA“, „topánky“, „Smartphone“, „NA“, „NA“, „laptop“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tlač (pd.zlúčiť (produkt, zákazník, on = 'Product_ID', how = 'vonkajší', indikátor = True))
Ako môžete vidieť na nasledujúcej snímke obrazovky, hodnoty stĺpca zlúčenia vysvetľujú, ktorý riadok patrí ktorému DataFrame.
Vľavo Pripojte sa k Pandám
Ľavé spojenie zobrazí iba riadky ľavého údajového rámca. Je to podobné ako pri vonkajšom spojení. Takže zmeňte hodnotu argumentu „ako“ na „doľava“. Vyskúšajte nasledujúci kód na implementáciu myšlienky Left join:
# importovať knižnicu Pandasimportovať pandy ako pd
produkt = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„slúchadlá“, „taška“, „topánky“, „smartphone“, „kefka na zuby“, „náramkové hodinky“, „notebook“],
„Kategória“: [„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'],
„Vek“: [20,21,15,10,31,52,15,18,16],
„Product_ID“: [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„slúchadlá“, „NA“, „náramkové hodinky“, „NA“, „topánky“, „Smartphone“, „NA“, „NA“, „laptop“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tlač (pd.zlúčiť (produkt, zákazník, on = 'Product_ID', how = 'left'))
Správne sa pripojte k pandám
Pravé spojenie udržuje všetky správne riadky DataFrame vpravo spolu s riadkami, ktoré sú bežné aj v ľavom DataFrame. V tomto prípade je argument „ako“ nastavený ako „správna“ hodnota. Spustením nasledujúceho kódu implementujte koncept správneho spojenia:
# importovať knižnicu Pandasimportovať pandy ako pd
produkt = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„slúchadlá“, „taška“, „topánky“, „smartphone“, „kefka na zuby“, „náramkové hodinky“, „notebook“],
„Kategória“: [„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'],
„Vek“: [20,21,15,10,31,52,15,18,16],
„Product_ID“: [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„slúchadlá“, „NA“, „náramkové hodinky“, „NA“, „topánky“, „Smartphone“, „NA“, „NA“, „laptop“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tlač (pd.merge (product, customer, on = 'Product_ID', how = 'right'))
Na nasledujúcej snímke obrazovky môžete vidieť výsledok po spustení vyššie uvedeného kódu:
Pripojenie DataFrames pomocou funkcie Concat ()
Dva dátové rámce je možné spojiť pomocou funkcie concat. Základná syntax zreťazovacej funkcie je uvedená nižšie:
pd.concat ([df_obj1, df_obj_2]))Ako argumenty prejdú dva objekty DataFrames.
Spojme produkt DataFrames aj zákazníka prostredníctvom funkcie concat. Spustením nasledujúcich riadkov kódu spojte dva údajové rámce:
# importovať knižnicu Pandasimportovať pandy ako pd
produkt = pd.DataFrame (
„ID_produktu“: [101 102 103 103 104 105 106 106],
„Product_Name“: [„slúchadlá“, „taška“, „topánky“, „smartphone“, „kefka na zuby“, „náramkové hodinky“, „notebook“],
„Kategória“: [„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'],
„Vek“: [20,21,15,10,31,52,15,18,16],
„Product_ID“: [101,0,106,0,103,104,0,0,107],
„Product_Purchased“: [„slúchadlá“, „NA“, „náramkové hodinky“, „NA“, „topánky“, „Smartphone“, „NA“, „NA“, „laptop“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Lahore“]
)
tlač (pd.concat ([produkt, zákazník]))
Záver:
V tomto článku sme diskutovali o implementácii funkcií merge (), concat () a spojenia v Pandas python. Pomocou vyššie uvedených metód môžete ľahko spojiť dva dátové rámce a naučiť sa. ako implementovať operácie spojenia „vnútorné, vonkajšie, ľavé a pravé“ v Pandas. Dúfajme, že vás tento návod prevedie implementáciou operácií spojenia na rôznych typoch údajových rámcov. Dajte nám vedieť o vašich problémoch v prípade akejkoľvek chyby.