Jako datový analytik budete často čelit potřebě kombinovat více datových sad. Budete to muset udělat, abyste dokončili analýzu a dospěli k závěru pro vaši firmu/zainteresované strany.

Reprezentovat data, když jsou uložena v různých tabulkách, je často náročné. Za takových okolností spojení prokážou svou hodnotu, bez ohledu na programovací jazyk, na kterém pracujete.

Spojení Pythonu jsou jako spojení SQL: kombinují datové sady tak, že se shodují jejich řádky na společném indexu.

Vytvořte dva datové rámce pro referenci

Chcete-li se řídit příklady v této příručce, můžete vytvořit dva vzorové datové rámce. Pomocí následujícího kódu vytvořte první DataFrame, který obsahuje ID, jméno a příjmení.

import pandy tak jako pd

a = pd. DataFrame({"ID": ["001", "002", "003", "004", "005"],
"Fname": ["Rone", "John", "Helen", "Jenny", "Kenny"],
"Ljméno": ["Keith", "Harley", "Kovář", "Kerr-Hislop", "Holič"]})
tisk(A)

V prvním kroku importujte soubor pandy knihovna. Poté můžete použít proměnnou, A, k uložení výsledku z konstruktoru DataFrame. Předejte konstruktoru slovník obsahující požadované hodnoty.

instagram viewer

Nakonec zobrazte obsah hodnoty DataFrame pomocí funkce tisku, abyste ověřili, že vše vypadá tak, jak byste očekávali.

Podobně můžete vytvořit další DataFrame, b, která obsahuje ID a hodnoty platu.

b = pd. DataFrame({"ID": ["001", "002", "003", "004", "005"],
"Plat": [100000, 700000, 80000, 904750, 604772]})

tisk(b)

Výstup můžete zkontrolovat v konzole nebo IDE. Měl by potvrdit obsah vašich datových rámců:

Jak se spojení liší od funkce sloučení v Pythonu?

Knihovna pandas je jednou z hlavních knihoven, které můžete použít k manipulaci s DataFrames. Vzhledem k tomu, že DataFrames obsahují více datových sad, jsou v Pythonu k dispozici různé funkce pro jejich spojení.

Python nabízí funkce spojení a sloučení, mezi mnoha dalšími, které můžete použít ke kombinování DataFrames. Mezi těmito dvěma funkcemi je propastný rozdíl, který musíte mít na paměti před použitím jedné z nich.

Funkce spojení spojuje dva DataFrame na základě jejich indexových hodnot. The funkce sloučení kombinuje DataFrames na základě hodnot indexu a sloupců.

Co potřebujete vědět o spojeních v Pythonu?

Než probereme dostupné typy spojení, je třeba si uvědomit několik důležitých věcí:

  • SQL joiny jsou jednou z nejzákladnějších funkcí a jsou docela podobné spojením Pythonu.
  • Chcete-li se připojit k DataFrames, můžete použít pandy. DataFrame.join() metoda.
  • Výchozí spojení provádí levé spojení, zatímco funkce sloučení provádí vnitřní spojení.

Výchozí syntaxe pro spojení Python je následující:

DataFrame.join (other, on=None, how='vlevo/vpravo/vnitřní/vnější', lsuffix='', rsufix='',
řazení=Nepravdivé)

Vyvolejte metodu spojení na prvním DataFrame a předejte druhý DataFrame jako jeho první parametr, jiný. Zbývající argumenty jsou:

  • na, který pojmenovává index, ke kterému se má připojit, pokud jich je více.
  • jak, který definuje typ spojení, včetně vnitřního, vnějšího, levého a pravého.
  • lsufix, který definuje levý řetězec přípony názvu vašeho sloupce.
  • rsufix, který definuje pravý příponový řetězec názvu vašeho sloupce.
  • seřadit, což je logická hodnota udávající, zda se má výsledný DataFrame třídit.

Naučte se používat různé typy spojení v Pythonu

Python má několik možností připojení, které můžete cvičit v závislosti na potřebě hodiny. Zde jsou typy spojení:

1. Připojit se vlevo

Levé spojení zachovává hodnoty prvního DataFrame nedotčené, zatímco přináší odpovídající hodnoty z druhého. Pokud například chcete přenést odpovídající hodnoty z b, můžete jej definovat následovně:

c = a.spojit (b, jak="vlevo, odjet", lsuffix = "_vlevo, odjet", rsufix = "_že jo", řazení = pravda)
tisk(C)

Když se dotaz spustí, výstup obsahuje následující odkazy na sloupce:

  • ID_left
  • Fname
  • Ljméno
  • ID_right
  • Plat

Toto spojení vytáhne první tři sloupce z prvního DataFrame a poslední dva sloupce z druhého DataFrame. To využilo lsufix a rsufix hodnoty k přejmenování sloupců ID z obou datových sad, čímž zajistíte, že výsledné názvy polí budou jedinečné.

Výstup je následující:

2. Správně Připojte se

Pravé spojení zachovává hodnoty druhého DataFrame nedotčené, zatímco přináší odpovídající hodnoty z první tabulky. Pokud například chcete přenést odpovídající hodnoty z A, můžete jej definovat následovně:

c = b.spojit (a, jak="že jo", lsuffix = "_že jo", rsufix = "_vlevo, odjet", řazení = pravda)
tisk(C)

Výstup je následující:

Pokud se podíváte na kód, existuje několik zjevných změn. Výsledek například zahrnuje sloupce druhého DataFrame před sloupci z prvního DataFrame.

Měli byste použít hodnotu že jo pro jak argument pro určení správného spojení. Všimněte si také, jak můžete přepnout lsufix a rsufix hodnoty odrážející povahu správného spojení.

Ve svých běžných spojeních můžete zjistit, že používáte levé, vnitřní a vnější spojení častěji než spojení pravé. Využití však zcela závisí na vašich požadavcích na data.

3. Vnitřní spojení

Vnitřní spojení dodává odpovídající položky z obou datových rámců. Vzhledem k tomu, že spojení používají čísla indexu ke shodě řádků, vnitřní spojení vrací pouze řádky, které se shodují. Pro tuto ilustraci použijme následující dva DataFrames:

a = pd. DataFrame({"ID": ["001", "002", "003", "004", "005", "006", "007"],
"Fname": ["Rone", "John", "Helen", "Jenny", "Kenny", "Daryl", "Cathy"],
"Ljméno": ["Keith", "Harley", "Kovář", "Kerr-Hislop", "Holič", "Hooper", "Naděje"]})
b = pd. DataFrame({"ID": ["001", "002", "003", "004", "005"],
"Plat": [100000, 700000, 80000, 904750, 604772]})

tisk(A)
tisk(b)

Výstup je následující:

Vnitřní spojení můžete použít následovně:

c = a.spojit (b, lsuffix="_vlevo, odjet", rsufix="_že jo", jak='vnitřní')
tisk(C)

Výsledný výstup obsahuje pouze řádky, které existují v obou vstupních DataFrames:

4. Vnější spojení

Vnější spojení vrátí všechny hodnoty z obou DataFrame. Pro řádky bez odpovídajících hodnot vytvoří v jednotlivých buňkách hodnotu null.

Pomocí stejného DataFrame jako výše je kód pro vnější spojení:

c = a.spojit (b, lsuffix="_vlevo, odjet", rsufix="_že jo", jak='vnější')
tisk(C)

Použití spojení v Pythonu

Spojení, stejně jako jejich protějšky, slučování a spojování, nabízejí mnohem více než jen jednoduchou funkci spojení. Vzhledem k řadě možností a funkcí si můžete vybrat možnosti, které splňují vaše požadavky.

Výsledné datové sady můžete třídit poměrně snadno, s funkcí join nebo bez ní, s flexibilními možnostmi, které Python nabízí.