0Pricing
Pandas & NumPy Academy · Ders

Sol ve Sağ Birleştirmeler

Bir tablodaki tüm satırları korurken diğer tablodaki eşleşen kayıtları almak için sol ve sağ birleştirmeler gerçekleştirin.

Sol ve Sağ Birleştirmeler, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 3. 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.

Asimetrik Birleştirmeler

İç ve dış birleştirmeler her iki DataFrame'i simetrik biçimde ele alır. Ancak çoğu zaman bir tablodaki tüm kayıtları korurken bunları başka bir tablodan alınan verilerle zenginleştirmek istersiniz. Sol birleştirmeler ve sağ birleştirmeler bu durumda kullanılır. Bu asimetrik birleştirmeler veri çözümlemede son derece yaygındır: tüm işlemleri koruyup uygun olduğunda ürün adlarını eklemek; tüm kullanıcıları koruyup varsa son satın alma tarihlerini eklemek gibi.

Sol Birleştirme: Soldaki Tüm Satırları Koruma

Sol birleştirme (how='left'), soldaki DataFrame'deki her satırı korur. Sağdaki DataFrame'de eşleşen bir anahtar bulan satırlar için sağ sütunlar eşleşen değerlerle doldurulur. Eşleşme bulunmayan satırlar için sağ sütunlar NaN ile doldurulur. Sonucun satır sayısı, yinelenen anahtarlar olmadığı varsayımıyla her zaman soldaki DataFrame'in satır sayısına eşittir.

import pandas as pd

orders = pd.DataFrame({
    'order_id': [1, 2, 3, 4],
    'customer_id': [101, 102, 101, 999],
    'amount': [250, 80, 320, 150]
})
customers = pd.DataFrame({
    'customer_id': [101, 102, 103],
    'name': ['Alice', 'Bob', 'Carol']
})

result = pd.merge(orders, customers, on='customer_id', how='left')
print(result)
# All 4 orders kept; order with customer_id=999 gets NaN for name

Sol Birleştirme Sonucunun Yapısı

Sol birleştirmeden sonra sağdaki DataFrame'de eşleşme bulamayan soldaki DataFrame satırlarının, sağ tablodan gelen her sütununda NaN bulunur. Eşleşmeyen satırları sağ tabloya ait bir sütun üzerinde mantıksal filtre kullanarak belirleyebilir ve eşleşmesi olmayan kaç sol satır bulunduğunu sayabilirsiniz; bu, yararlı bir veri kalitesi denetimidir.

result = pd.merge(orders, customers, on='customer_id', how='left')
print(result)
#    order_id  customer_id  amount   name
# 0         1          101     250  Alice
# 1         2          102      80    Bob
# 2         3          101     320  Alice
# 3         4          999     150    NaN  <- no matching customer

# Count unmatched
unmatched = result['name'].isna().sum()
print(f'{unmatched} orders have no customer record')

Sol Birleştirme Ne Zaman Kullanılır

Sol DataFrame'iniz ana tablo, sağ tablo ise tamamlayıcı olduğunda sol birleştirmeler uygundur. Yaygın senaryolar şunlardır: olgu tablosunu boyut tablosuyla zenginleştirmek (siparişler + ürün adları), isteğe bağlı üst veriler eklemek (kullanıcılar + profil verileri) veya bir arama başarısız olsa bile tüm kayıtlar için ölçümler hesaplamak. Çoğu veri çözümleme kodunda sol birleştirmeler, sağ birleştirmelerden çok daha yaygındır.

# Realistic pattern: enrich all products with optional category data
products = pd.DataFrame({'sku': ['A1', 'B2', 'C3'], 'price': [10, 20, 15]})
categories = pd.DataFrame({'sku': ['A1', 'C3'], 'category': ['Tools', 'Home']})

# Keep all products; add category where available
enriched = pd.merge(products, categories, on='sku', how='left')
print(enriched)
#    sku  price category
# 0   A1     10    Tools
# 1   B2     20      NaN
# 2   C3     15     Home

Sağ Birleştirme: Sağdaki Tüm Satırları Koruma

Sağ birleştirme (how='right'), sol birleştirmenin ayna görüntüsüdür: sağdaki DataFrame'in her satırını korur ve eşleşme olmayan yerlerde sol tabloya ait sütunları NaN ile doldurur. Sağ birleştirme daha az kullanılır; çünkü DataFrame bağımsız değişkenlerinin yerlerini değiştirip bunun yerine bir sol birleştirme kullanarak her zaman aynı sonucu elde edebilirsiniz. Bu yaklaşım, kodu okuyanlar için daha açıktır.

# Right join: keep all customers, attach orders where they exist
result = pd.merge(orders, customers, on='customer_id', how='right')
print(result)
# All 3 customers appear; Carol (103) has NaN for order_id and amount

# Equivalent left join (swap arguments):
result2 = pd.merge(customers, orders, on='customer_id', how='left')
# Same data, just column order differs

Dört Birleştirme Türünü Karşılaştırma

Dört birleştirme türü yalnızca eşleşmeyen taraftaki hangi satırların korunacağı bakımından farklıdır. inner: yalnızca eşleşen satırlar. outer: her iki taraftaki tüm satırlar. left: soldaki tüm satırlar. right: sağdaki tüm satırlar. Eşleşmeyen girdilerde, bulunmayan taraftan gelen sütunlar NaN ile doldurulur. Kayıtların fark edilmeden kaldırılmasını veya çoğaltılmasını önlemek için doğru seçimi yapmak çok önemlidir.

# Summary table
# how='inner'  : rows in BOTH tables
# how='left'   : ALL left rows  + matched right
# how='right'  : matched left   + ALL right rows
# how='outer'  : ALL left rows  + ALL right rows

# Test each
for how in ['inner', 'left', 'right', 'outer']:
    r = pd.merge(orders, customers, on='customer_id', how=how)
    print(f'{how}: {len(r)} rows')

Sol Birleştirme Sonuçlarındaki NaN Değerlerini Doldurma

Sol birleştirmeden sonra eşleşmeyen satırlarda sağ tabloya ait sütunlarda NaN bulunur. Bunları çoğu zaman makul varsayılanlarla doldurmak istersiniz; örneğin eksik bir kategori için 'Unknown', eksik bir sayı için 0 kullanabilirsiniz. Sonuç üzerinde fillna() kullanın veya birleştirmeyi izleyen aritmetik işlemlerde fill_value geçirin.

result = pd.merge(products, categories, on='sku', how='left')
result['category'] = result['category'].fillna('Uncategorised')
print(result)
#    sku  price       category
# 0   A1     10          Tools
# 1   B2     20  Uncategorised
# 2   C3     15           Home

Sol Karşıt Birleştirme: Eşleşmesi Olmayan Satırlar

how tarafından doğrudan desteklenmeyen yararlı bir yaklaşım karşıt birleştirmedir: yalnızca sağ tabloda eşleşmesi OLMAYAN sol satırları tutar. Bunu indicator=True kullanarak bir sol birleştirmeyle uygulayın, ardından _merge == 'left_only' için filtreleyin. Bu yöntem, sahipsiz kayıtları, başvuru listesinde bulunmayan yeni öğeleri veya defterde eksik olan işlemleri bulmak için idealdir.

# Anti-join: orders with no matching customer record
result = pd.merge(orders, customers, on='customer_id',
                  how='left', indicator=True)
unmatched_orders = result[result['_merge'] == 'left_only'].drop(columns='_merge')
print(unmatched_orders)
#    order_id  customer_id  amount  name
# 3         4          999     150   NaN

Sol Birleştirmeyle Satır Sayısını Koruma

Sağ DataFrame benzersiz anahtarlara sahip olduğunda sol birleştirmenin soldaki tablonun tam satır sayısını koruyacağı garanti edilir. Ancak sağ tabloda yinelenen anahtar değerleri varsa sol birleştirme, tıpkı iç birleştirme gibi satırları çoğaltır. Bire çok ilişkisi beklediğinizde, çıktıdaki satır sayısının soldaki tablonun satır sayısıyla eşleştiğini her zaman doğrulayın.

# Right table has duplicate keys -> row multiplication
orders_small = pd.DataFrame({'id': [1, 2], 'amount': [100, 200]})
multi_customer = pd.DataFrame({
    'id': [1, 1],  # duplicate!
    'contact': ['Alice', 'Alice2']
})

result = pd.merge(orders_small, multi_customer, on='id', how='left')
print(len(result))  # 3 rows! order 1 appears twice
print(result)

Gerçek Dünya Sol Birleştirme Modeli

Eksiksiz bir gerçek dünya iş akışı şöyledir: bir işlem günlüğüyle başlayın, adları almak için ürün kataloğuyla sol birleştirme yapın, ardından adları almak için müşteri tablosuyla sol birleştirme yapın. Eksik arama sonuçlarını varsayılan değerlerle doldurun. Sol birleştirme zinciri, ürün veya müşteri kaydı başvuru tablolarında bulunmasa bile her işlem satırının korunmasını sağlar.

transactions = pd.DataFrame({
    'txn_id': [1, 2, 3],
    'cust_id': [10, 11, 99],
    'prod_id': [20, 21, 20],
    'total': [50, 30, 70]
})

custs = pd.DataFrame({'cust_id': [10, 11], 'cust_name': ['Alice', 'Bob']})
prods = pd.DataFrame({'prod_id': [20, 21], 'prod_name': ['Widget', 'Gadget']})

result = (
    transactions
    .merge(custs, on='cust_id', how='left')
    .merge(prods, on='prod_id', how='left')
)
print(result)

Sol Birleştirme mi İç Birleştirme mi: Karar Verme

Sol ve iç birleştirme arasındaki seçim bir iş mantığı kararıdır: arama eşleşmesi olmayan kayıtları korumalı mısınız, yoksa bunları fark ettirmeden kaldırmalı mısınız? Eksik arama sonuçları kabul edilebilirse ve tüm ana kayıtları korumak istiyorsanız sol birleştirme kullanın. Eksik bir arama sonucunun kaydın geçersiz olduğu ve çözümlemeye dahil edilmemesi gerektiği anlamına geldiği durumlarda iç birleştirme kullanın. Hangi seçimi yaptığınızı ve nedenini her zaman belgeleyin.

# Left join: keep all transactions (some may have no product name)
result_left = pd.merge(transactions, prods, on='prod_id', how='left')
print('Left join rows:', len(result_left))   # same as transactions

# Inner join: only transactions with known product
result_inner = pd.merge(transactions, prods, on='prod_id', how='inner')
print('Inner join rows:', len(result_inner))  # may be fewer

Hızlı Kontrol

Bu derste öğrendiğiniz sol ve sağ birleştirmeleri anlayıp anlamadığınızı sınayın.

Ders Özeti

Bu derste şunları öğrendiniz: sol birleştirme, eşleşmeyenler için sağ sütunlarda NaN kullanarak soldaki DataFrame'in tüm satırlarını korur; sağ birleştirme bunun ayna görüntüsüdür; indicator=True kullanan karşıt birleştirme yaklaşımı, sağda eşleşmesi olmayan sol satırları bulur; sol ve iç birleştirme arasındaki seçim bir iş mantığı kararıdır. Sırada, DataFrame'leri bir sütun yerine dizinleri üzerinden birleştirmeyi inceleyeceğiz.

Sıkça Sorulan Sorular

“Sol ve Sağ Birleştirmeler” dersi ücretsiz mi?

Evet — “Sol ve Sağ 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.

“Sol ve Sağ Birleştirmeler” dersinde ne öğreneceğim?

Bir tablodaki tüm satırları korurken diğer tablodaki eşleşen kayıtları almak için sol ve sağ birleştirmeler gerçekleştirin. 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 3. dersidir.

“Sol ve Sağ 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

  1. DataFrame'leri Yığmak için pd.concat
  2. pd.merge: İç ve Dış Birleştirmeler
  3. Sol ve Sağ Birleştirmeler
  4. İndekse Göre Birleştirme
← Pandas & NumPy Academy Sayfasına Dön