pd.merge: İç ve Dış Birleştirmeler
İki DataFrame'i ortak bir anahtar sütununda iç ve dış birleştirmeler kullanarak birleştirin ve hangi satırların korunduğunu ya da kaldırıldığını öğrenin.
pd.merge: İç ve Dış Birleştirmeler, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
Birleştirme nedir?
Birleştirme, ortak bir anahtar sütununa göre satırları eşleştirerek iki DataFrame'i bir araya getirir — SQL'deki JOIN yan tümcesiyle aynı kavramdır. Pandas, birleştirmeleri pd.merge() üzerinden uygular. Verileri yalnızca üst üste getiren pd.concat() işlevinin aksine pd.merge(), bir veya daha fazla sütundaki eşleşen değerlere göre iki farklı tablodaki satırları akıllıca hizalar.
Ortak anahtar sütunu
Birleştirmenin çalışması için her iki DataFrame'de de ortak değerlere sahip en az bir sütun, yani anahtar sütunu bulunmalıdır. Örneğin orders tablosunda bir customer_id sütunu, customers tablosunda da bir customer_id sütunu vardır. customer_id üzerinden birleştirme yapmak, müşteri ayrıntılarını her sipariş satırına ekler. Her iki DataFrame aynı sütun adını paylaşıyorsa anahtarı on parametresiyle belirtin.
import pandas as pd
orders = pd.DataFrame({
'order_id': [1, 2, 3, 4],
'customer_id': [101, 102, 101, 103],
'amount': [250, 80, 320, 150]
})
customers = pd.DataFrame({
'customer_id': [101, 102, 104],
'name': ['Alice', 'Bob', 'Diana']
})İç birleştirme: iki tablonun kesişimi
İç birleştirme (varsayılan), yalnızca anahtar değerinin her iki DataFrame'de de bulunduğu satırları tutar. Tablolardan birinde bulunup diğerinde eşleşen anahtarı olmayan satırlar sessizce kaldırılır. Sipariş örneğinde 103 ve 104 numaralı müşterilerin diğer tabloda eşleşmesi yoktur; bu nedenle satırları iç birleştirme sonucuna dahil edilmez.
# Inner join (default): only matching rows from both
result = pd.merge(orders, customers, on='customer_id', how='inner')
print(result)
# order_id customer_id amount name
# 0 1 101 250 Alice
# 1 3 101 320 Alice
# 2 2 102 80 Bob
# Order 4 (customer 103) dropped - no match in customers
# Diana (customer 104) dropped - no match in ordersDış birleştirme: iki tablonun birleşimi
Dış birleştirme (how='outer'), her iki DataFrame'deki tüm satırları tutar. Bir satırın diğer tabloda eşleşen anahtarı yoksa eksik sütunlar NaN ile doldurulur. Bu, eşleşme bulamayan kayıtları da koruyarak her iki veri kümesinin eksiksiz bir görünümünü elde etmek istediğinizde kullanışlıdır.
result = pd.merge(orders, customers, on='customer_id', how='outer')
print(result)
# order_id customer_id amount name
# 0 1.0 101 250.0 Alice
# 1 3.0 101 320.0 Alice
# 2 2.0 102 80.0 Bob
# 3 4.0 103 150.0 NaN <- order with unknown customer
# 4 NaN 104 NaN Diana <- customer with no ordersFarklı adlara sahip sütunlarda birleştirme
Anahtar sütununun her DataFrame'de farklı bir adı varsa on yerine left_on ve right_on kullanın. Pandas, sol DataFrame'deki left_on değerinin sağ DataFrame'deki right_on değerine eşit olduğu satırları eşleştirir. Her iki anahtar sütunu da sonuçta görünür; sonrasında yinelenen olanı kaldırabilirsiniz.
products = pd.DataFrame({
'prod_id': [10, 20, 30],
'name': ['Widget', 'Gadget', 'Doohickey']
})
order_lines = pd.DataFrame({
'item_id': [10, 10, 20],
'qty': [3, 1, 5]
})
result = pd.merge(order_lines, products,
left_on='item_id', right_on='prod_id')
print(result.drop(columns='prod_id'))
# item_id qty name
# 0 10 3 Widget
# 1 10 1 Widget
# 2 20 5 GadgetBirden çok sütunda birleştirme
Satırları bir sütun birleşimine (bileşik anahtara) göre eşleştirmek için on parametresine bir liste iletin. Bu, tek bir sütunun benzersiz bir eşleşme için yeterli olmadığı durumlarda yaygındır; örneğin hem year hem de region üzerinden birleştirme yapmak gibi. Bir satırın sonuca dahil edilmesi için listelenen tüm sütunların aynı anda eşleşmesi gerekir.
targets = pd.DataFrame({
'year': [2023, 2023, 2024],
'region': ['East', 'West', 'East'],
'target': [100, 150, 120]
})
actuals = pd.DataFrame({
'year': [2023, 2024, 2024],
'region': ['East', 'East', 'West'],
'actual': [95, 115, 80]
})
result = pd.merge(targets, actuals, on=['year', 'region'], how='inner')
print(result)
# year region target actual
# 0 2023 East 100 95
# 1 2024 East 120 115Çakışan sütun adlarını ele alma
Her iki DataFrame de anahtar dışındaki aynı ada sahip bir sütun içerdiğinde, Pandas bunları ayırt etmek için sonekler ekler. Varsayılanlar soldaki için _x, sağdaki için _y şeklindedir. Daha anlamlı adlar oluşturmak ve sonuçtaki karışıklığı önlemek için bunları suffixes parametresiyle özelleştirebilirsiniz.
df_a = pd.DataFrame({'id': [1, 2], 'value': [10, 20]})
df_b = pd.DataFrame({'id': [1, 2], 'value': [100, 200]})
# Default suffixes
print(pd.merge(df_a, df_b, on='id'))
# id value_x value_y
# Custom suffixes
print(pd.merge(df_a, df_b, on='id', suffixes=('_budget', '_actual')))
# id value_budget value_actualBeklenmeyen Yinelenenleri Denetleme
Yaygın bir birleştirme sorunu, beklenmeyen satır çoğalmasıdır. Anahtar sütununda her iki DataFrame içinde de yinelenen değerler varsa birleştirme, eşleşen tüm satırların kartezyen çarpımını üretir. Birleştirme sonrasında satır sayısını her zaman denetleyin: beklediğinizden fazlaysa df.duplicated(subset=['key']).sum() ile anahtar sütunundaki yinelemeleri araştırın.
# Both tables have duplicate keys -> cartesian product
left = pd.DataFrame({'id': [1, 1], 'val_l': ['a', 'b']})
right = pd.DataFrame({'id': [1, 1], 'val_r': ['x', 'y']})
result = pd.merge(left, right, on='id')
print(len(result)) # 4 rows! (2x2 cartesian product)
print(result)
# id val_l val_r
# 0 1 a x
# 1 1 a y
# 2 1 b x
# 3 1 b yGüvenlik için validate Parametresi
Birleştirme üzerindeki ilişki kısıtlarını zorunlu kılmak ve bunlar ihlal edilirse hata oluşturmak için validate parametresini geçirin. 'one_to_one', her iki tabloda da benzersiz anahtarlar olmasını gerektirir; 'one_to_many', yalnızca soldaki tabloda benzersiz anahtarlar olmasını gerektirir; 'many_to_one' ise yalnızca sağdaki tabloda benzersiz anahtarlar olmasını gerektirir. Bu, veri kalitesi sorunlarını erkenden yakalayan mükemmel bir savunmacı kodlama uygulamasıdır.
# Safe merge: validate that customer_id is unique in customers
try:
result = pd.merge(orders, customers,
on='customer_id',
how='inner',
validate='many_to_one')
print('Merge OK, shape:', result.shape)
except Exception as e:
print('Merge error:', e)indicator ile Kapsamı Denetleme
Her satırın nereden geldiğini gösteren bir _merge sütununu sonuca eklemek için indicator=True geçirin: 'left_only', 'right_only' veya 'both'. Bu, dış birleştirmeden sonra hangi kayıtların eşleştiğini ve hangilerinin eşleşmediğini belirlemek için yararlıdır; gösterge sütununu kaldırmadan önce veri kalitesini denetlemenize yardımcı olur.
result = pd.merge(orders, customers, on='customer_id',
how='outer', indicator=True)
print(result['_merge'].value_counts())
# both 3
# left_only 1 <- orders with no customer record
# right_only 1 <- customers with no orders
# Find unmatched orders
print(result[result['_merge'] == 'left_only'])İç ve Dış Birleştirmelerin Özeti
İki birleştirme türünü özetlemek gerekirse: iç birleştirme kesişimi verir; yalnızca her iki DataFrame içinde eşleşen anahtarlara sahip satırlar alınır. Dış birleştirme birleşimi verir; her iki DataFrame'deki tüm satırlar alınır ve eşleşme olmayan yerlerde NaN kullanılır. Eksiksiz olması için: sol birleştirme soldaki DataFrame'in tüm satırlarını, sağ birleştirme ise sağdaki DataFrame'in tüm satırlarını korur. Bunlar sonraki derste ele alınacaktır.
# Quick reference
# how='inner' -> intersection: only matched rows
# how='outer' -> union: all rows from both, NaN for no match
# how='left' -> all left rows + matched right rows
# how='right' -> all right rows + matched left rows
# Most common: inner (default) for enrichment, left for preserving recordsHızlı Kontrol
Bu derste öğrendiğiniz pd.merge iç ve dış birleştirmeleri anlayıp anlamadığınızı sınayın.
Ders Özeti
Bu derste şunları öğrendiniz: how='inner' ile pd.merge() her iki DataFrame'den yalnızca eşleşen satırları tutar; how='outer' ise eşleşmeyenler için NaN kullanarak tüm satırları tutar; on ortak anahtarı belirtirken left_on/right_on farklı sütun adlarını işler; indicator parametresi hangi satırların eşleştiğini denetlemenize yardımcı olur. Sırada, bir taraftaki tüm satırları korumak için sol ve sağ birleştirmeleri inceleyeceğiz.
Yapay zeka eğitmeniyle Python öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 30
- Dersler
- 120
Sıkça Sorulan Sorular
“pd.merge: İç ve Dış Birleştirmeler” dersi ücretsiz mi?
Evet — “pd.merge: İç ve Dış Birleştirmeler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
“pd.merge: İç ve Dış Birleştirmeler” dersinde ne öğreneceğim?
İki DataFrame'i ortak bir anahtar sütununda iç ve dış birleştirmeler kullanarak birleştirin ve hangi satırların korunduğunu ya da kaldırıldığını öğrenin. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“pd.merge: İç ve Dış Birleştirmeler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- DataFrame'leri Yığmak için pd.concat
- pd.merge: İç ve Dış Birleştirmeler
- Sol ve Sağ Birleştirmeler
- İndekse Göre Birleştirme