pandas
Pandas GroupBy — Split-Apply-Combine Deseni
Pandas'ın en güçlü fonksiyonu. SQL GROUP BY karşılığı, çoklu aggregation, transform vs aggregate.
⏱️ 15 dakika okuma•intermediate•
Pandas GroupBy
SQL'deki GROUP BY'ın Pandas karşılığı. Split-Apply-Combine deseni.
Temel Kullanım
import pandas as pd
df = pd.DataFrame({
'category': ['A', 'B', 'A', 'B', 'A'],
'value': [10, 20, 30, 40, 50]
})
df.groupby('category')['value'].mean()
# category
# A 30
# B 30
Çoklu Aggregation
df.groupby('category').agg({
'value': ['mean', 'sum', 'count'],
'price': ['min', 'max']
})
Named Aggregation (Pandas 0.25+)
df.groupby('category').agg(
avg_value=('value', 'mean'),
total_value=('value', 'sum'),
count_records=('value', 'count')
)
Transform vs Aggregate
Aggregate: Her grup için tek değer.
Transform: Orijinal shape'i korur, her satıra grup değeri yazılır.
# Aggregate
df.groupby('cat')['value'].mean() # Her kategori için 1 değer
# Transform
df['group_mean'] = df.groupby('cat')['value'].transform('mean')
# Her satıra kendi kategorisinin ortalaması yazılır
Filter
# 5'ten fazla kayıt olan kategorileri tut
df.groupby('cat').filter(lambda g: len(g) > 5)
Apply (Custom Fonksiyon)
df.groupby('cat').apply(lambda g: pd.Series({
'range': g['value'].max() - g['value'].min(),
'cv': g['value'].std() / g['value'].mean() # coefficient of variation
}))
Performans İpuçları
groupby('cat', sort=False) — sort'u devre dışı bırakgroupby(['c1', 'c2']) — MultiIndex dönerobserved=True (categorical kolonlar için)Gerçek Dünya
Sık Sorulan Sorular
S:GroupBy neden yavaş?
C:Çok büyük DataFrame'lerde (10M+ satır) `sort=False` ekleyin veya `pyarrow` backend kullanın. Dask/Polars da seçenek.
S:groupby.shift ne işe yarar?
C:Zaman serisi analizinde lag/lead değerleri hesaplar. Örn: bir önceki güne göre değişim.
İlgili Mülakat Soruları
Bu rehberi okuduktan sonra şu soruları çözerek pratiğinizi pekiştirin:
Pratik yapmaya hazır mısın?
Tüm Python mülakat sorularını tarayıcıda çalıştır, test caseleri geç, kodunu paylaş.
Sorulara Göz At→