Geavanceerd mergen en joinen
pd.merge() met how, on, left_on/right_on, suffixes en merge_asof voor tijdgebaseerde joins.
Geavanceerd mergen en joinen is een gratis Leer AI met Python-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Leer AI met Python. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Leer AI met Python bevat in totaal 4 lessen.
DataFrames combineren
pd.merge koppelt twee DataFrames op gedeelde sleutels, precies zoals een SQL JOIN. Het beheersen van de how-opties is essentieel voor relationeel gegevenswerk.
import pandas as pd
left = pd.DataFrame({"id": [1, 2, 3], "name": ["a", "b", "c"]})
right = pd.DataFrame({"id": [2, 3, 4], "score": [90, 80, 70]})Inner join (standaard)
how="inner" behoudt alleen sleutels die in beide DataFrames voorkomen. Dit is de standaardinstelling.
print(pd.merge(left, right, on="id", how="inner"))
# id name score
# 0 2 b 90
# 1 3 c 80Left join
how="left" behoudt elke rij uit het linker dataframe; niet-overeenkomende kolommen aan de rechterkant worden NaN. Dit is de meest voorkomende join in analytisch werk.
print(pd.merge(left, right, on="id", how="left"))
# id name score
# 0 1 a NaN
# 1 2 b 90.0
# 2 3 c 80.0Outer join
how="outer" behoudt alle sleutels van beide kanten en vult ontbrekende waarden op met NaN. Gebruik dit om de volledige vereniging van records te bekijken.
print(pd.merge(left, right, on="id", how="outer"))
# includes id 1 (no score) and id 4 (no name)Koppelen op verschillende kolomnamen
Als sleutelkolommen verschillende namen hebben, gebruik je left_on en right_on in plaats van on.
r2 = right.rename(columns={"id": "user_id"})
print(pd.merge(left, r2, left_on="id", right_on="user_id"))Achtervoegsels voor overlappende kolommen
Als beide DataFrames een niet-sleutelkolom met dezelfde naam hebben, voegt pandas _x en _y toe. Overschrijf deze met suffixes voor meer duidelijkheid.
a = pd.DataFrame({"id": [1], "val": [10]})
b2 = pd.DataFrame({"id": [1], "val": [99]})
print(pd.merge(a, b2, on="id", suffixes=("_old", "_new")))De indicator-kolom
indicator=True voegt een kolom _merge toe die de herkomst van elke rij toont: left_only, right_only of both. Dit is onmisbaar voor het controleren van joins.
print(pd.merge(left, right, on="id", how="outer", indicator=True))
# _merge tells you where each row came fromProblemen met joins opsporen
Door op de indicator te filteren zie je snel welke sleutels geen overeenkomst hebben. Dat is een veelvoorkomende oorzaak van ongemerkt verloren gegevens.
m = pd.merge(left, right, on="id", how="outer", indicator=True)
print(m[m["_merge"] != "both"]) # rows that did not matchmerge_asof voor tijdkoppelingen
pd.merge_asof koppelt op de DICHTSTBIJZIJNDE sleutel in plaats van op een exacte overeenkomst. Deze functie is speciaal bedoeld om tijdreeksen op elkaar af te stemmen, bijvoorbeeld door elke transactie aan de meest recente voorafgaande notering te koppelen. Beide dataframes moeten op de sleutel zijn gesorteerd.
trades = pd.DataFrame({"time": [1, 3, 7], "price": [10, 11, 12]})
quotes = pd.DataFrame({"time": [0, 2, 5], "bid": [9, 10, 11]})
print(pd.merge_asof(trades, quotes, on="time"))Richting van merge_asof
Standaard zoekt merge_asof ACHTERWAARTS (de meest recente sleutel op of vóór de huidige sleutel). Gebruik direction="forward" of "nearest" om de koppelingsregel te wijzigen.
print(pd.merge_asof(trades, quotes, on="time", direction="nearest"))De juiste koppeling kiezen
Gebruik een binnenkoppeling om alleen overeenkomsten te behouden, een linkerkoppeling om een hoofdtabel aan te vullen, een buitenkoppeling voor de volledige vereniging en merge_asof voor op tijd uitgelijnde koppelingen met benaderende sleutels.
Korte toets
Toets je kennis van koppelingen.
Samenvatting
Gereedschappen voor samenvoegen:
how=binnen / links / buiten bepaalt welke sleutels behouden blijvenonversusleft_on/right_onvoor sleutelkolommensuffixesmaakt overlappende namen ondubbelzinnigindicator=Truecontroleert de bronnen van rijenpd.merge_asofvoor tijdkoppelingen op basis van de dichtstbijzijnde sleutel (sorteer eerst)
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 53
- Lessen
- 225
Veelgestelde vragen
Is de les “Geavanceerd mergen en joinen” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Leer AI met Python, waaronder “Geavanceerd mergen en joinen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Leer AI met Python bevat in totaal 4 lessen.
Wat leer ik in “Geavanceerd mergen en joinen”?
pd.merge() met how, on, left_on/right_on, suffixes en merge_asof voor tijdgebaseerde joins. Je oefent met Leer AI met Python door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Leer AI met Python te beginnen?
Ervaring vooraf is niet nodig. Leer AI met Python op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Geavanceerd mergen en joinen”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Leer AI met Python?
Ja. Elke les over Leer AI met Python bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- GroupBy en aggregatie
- Draaitabellen en kruistabellen
- Geavanceerd mergen en joinen
- Tijdreeksen in Pandas