Table of Contents
Pandas merge() – Sloučení dvou objektů DataFrame
Úvod
Funkce merge()
v knihovně pandas je mocný nástroj pro kombinování a slučování dvou nebo více datových rámců na základě společných klíčů. Umožňuje vám kombinovat data z různých zdrojů a provádět na nich různé operace, jako je agregace, filtrování a výpočty.
Jak funguje funkce merge()
?
Funkce merge()
porovnává klíče ve dvou datových rámcích a vrací nový datový rámec, který obsahuje data z obou datových rámců. Společné klíče jsou sloupec nebo sloupce, které se nacházejí v obou datových rámcích.
Syntaxe funkce merge()
je následující:
python
pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False)
Kde:
* left: Levý datový rámec, který se má sloučit.
* right: Pravý datový rámec, který se má sloučit.
* how: Typ spojení. Může být ‚inner‘, ‚outer‘, ‚left‘, ‚right‘ nebo ‚cross‘.
* on: Společný klíč nebo sloupce, které se mají použít pro sloučení.
* left_on: Společný klíč nebo sloupce v levém datovém rámci, které se mají použít pro sloučení.
* right_on: Společný klíč nebo sloupce v pravém datovém rámci, které se mají použít pro sloučení.
* left_index: Boolean, který určuje, zda se má jako společný klíč použít index levého datového rámce.
* right_index: Boolean, který určuje, zda se má jako společný klíč použít index pravého datového rámce.
Typy spojení
Funkce merge()
podporuje následující typy spojení:
* Vnitřní spojení (inner): Vrátí pouze řádky, které mají odpovídající hodnoty klíče v obou datových rámcích.
* Vnější spojení (outer): Vrátí všechny řádky z obou datových rámců, i když nemají odpovídající hodnotu klíče. Řádky, které nemají odpovídající hodnotu klíče, se vyplní hodnotami NaN.
* Levé spojení (left): Vrátí všechny řádky z levého datového rámce a pouze řádky z pravého datového rámce, které mají odpovídající hodnotu klíče.
* Pravé spojení (right): Vrátí všechny řádky z pravého datového rámce a pouze řádky z levého datového rámce, které mají odpovídající hodnotu klíče.
* Křížové spojení (cross): Vrátí všechny řádky z levého datového rámce pro každý řádek z pravého datového rámce, čímž vytvoří nový datový rámec, který obsahuje všechny možné kombinace řádků.
Příklady
Příklad 1: Vnitřní spojení
Předpokládejme, že máme dva datové rámce, left_df
a right_df
, které obsahují informace o zákaznících a jejich objednávkách. Chceme sloučit tyto dva datové rámce na základě sloupce customer_id
.
python
import pandas as pd
left_df = pd.DataFrame({
'customer_id': [1, 2, 3],
'name': ['Alice', 'Bob', 'Carol'],
'city': ['New York', 'London', 'Paris']
})
right_df = pd.DataFrame({
'customer_id': [1, 2, 4],
'order_id': [100, 101, 102],
'product': ['iPhone', 'iPad', 'MacBook']
})
merged_df = pd.merge(left_df, right_df, on='customer_id')
print(merged_df)
Výstup:
customer_id name city order_id product
0 1 Alice New York 100 iPhone
1 2 Bob London 101 iPad
Příklad 2: Vnější spojení
Vnější spojení vrátí všechny řádky z obou datových rámců, i když nemají odpovídající hodnotu klíče.
python
merged_df = pd.merge(left_df, right_df, on='customer_id', how='outer')
print(merged_df)
Výstup:
customer_id name city order_id product
0 1 Alice New York 100 iPhone
1 2 Bob London 101 iPad
2 3 Carol Paris NaN NaN
3 4 NaN NaN 102 MacBook
Závěr
Funkce merge()
v pandas je mocný nástroj pro kombinování a slučování datových rámců. Umožňuje vám provádět různé typy spojení na základě společných klíčů a vytvářet tak nové datové rámce obsahující kombinovaná data. Porozumění různým typům spojení a jejich použití je nezbytné pro efektivní manipulaci s daty pomocí knihovny pandas.
Často kladené otázky (FAQ)
1. Co je funkce merge()
?
Funkce merge()
v pandas sloučí dva datové rámce na základě společných klíčů.
2. Jaké typy spojení podporuje funkce merge()
?
Funkce merge()
podporuje vnitřní, vnější, levé, pravé a křížové spojení.
3. Jaký je výchozí typ spojení?
Výchozí typ spojení je vnitřní spojení.
4. Jak mohu použít funkci merge()
pro sloučení datových rámců na základě více klíčů?
Můžete použít argument on
a zadat seznam klíčů pro provedení spojení na více klíčích.
5. Co znamená hodnota NaN ve sloučeném datovém rámci?
Hodnota NaN ve sloučeném datovém rámci indikuje, že daný řádek nemá odpovídající hodnotu v jiném datovém rámci.
6. Jak mohu odstranit duplicitní řádky ze sloučeného datového rámce?
Můžete použít metodu drop_duplicates()
pro odstranění duplicitních řádků ze sloučeného datového rámce.
7. Jak mohu použít index jako společný klíč pro funkci merge()
?
Můžete nastavit argumenty left_index
a right_index
na True
, abyste použili indexy datových rámců jako společné klíče.
8. Jaký je rozdíl mezi vnějším spojením a křížovým spojením?
Vnější spojení vrátí všechny řádky z obou datových rámců, i když nemají odpovídající hodnotu klíče. Křížové spojení vrátí všechny možné kombinace řádků z obou datových rámců.
9. Jak mohu provést spojení na více datových rámcích?
Můžete použít funkci merge()
opakovaně pro provedení spojení na více datových rámcích.
10. Je funkce merge()
efektivní pro velké datové sady?
Ano, funkce merge()
je efektivní pro velké datové sady díky své optimalizované implementaci.