Tek ve Birden Çok Anahtarla GroupBy
groupby() ile bir veya daha fazla sütuna göre gruplandırın ve sum, mean, count ile min/max toplulaştırmalarını uygulayın.
Tek ve Birden Çok Anahtarla GroupBy, 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.
Tek Anahtarla GroupBy
En basit GroupBy çağrısı, gruplama anahtarı olarak tek bir sütun kullanır. df.groupby('column_name') çağrısını yapar ve bir toplama yöntemi zincirlersiniz. Pandas, bu sütundaki her unique değer için bir grup oluşturur ve toplama yöntemini her sayısal sütuna (veya seçilen sütuna) uygular. Bu, günlük analizlerde en sık kullanılan GroupBy biçimidir.
import pandas as pd
df = pd.DataFrame({
'dept': ['Eng', 'HR', 'Eng', 'HR', 'Eng'],
'salary': [90000, 60000, 95000, 62000, 88000],
'years': [3, 5, 7, 2, 4]
})
print(df.groupby('dept')['salary'].mean())
# dept
# Eng 91000.0
# HR 61000.0Hangi Sütunların Toplanacağını Seçme
groupby() çağrısından sonra, köşeli parantez gösterimiyle tek bir sütun seçerek bir SeriesGroupBy elde edebilir veya bir listeyle birden fazla sütun seçerek bir DataFrameGroupBy elde edebilirsiniz. Seçimi tamamen atlarsanız Pandas tüm sayısal sütunları toplar. Bu kullanışlıdır; ancak ilgisiz sayısal sütunlarınız olduğunda beklenmedik sonuçlar üretebilir.
# Single column result -> SeriesGroupBy
print(df.groupby('dept')['salary'].sum())
# Multiple columns result -> DataFrameGroupBy
print(df.groupby('dept')[['salary', 'years']].mean())
# salary years
# dept
# Eng 91000.0 4.667
# HR 61000.0 3.500Yaygın Tüm Toplama Yöntemleri
Pandas, GroupBy nesnelerinde eksiksiz bir yerleşik toplama yöntemi kümesini destekler: sum(), mean(), median(), min(), max(), count(), std(), var(), first() ve last(). Her biri grup başına bir skaler değer döndürür ve gruplama anahtarına göre indekslenmiş, düzenli bir özet tablosu oluşturur.
g = df.groupby('dept')['salary']
print('sum: ', g.sum())
print('mean: ', g.mean())
print('min: ', g.min())
print('max: ', g.max())
print('count: ', g.count())
print('std: ', g.std().round(2))Birden Çok Anahtarla GroupBy
Aynı anda birden fazla boyuta göre gruplama yapmak için groupby() işlevine bir sütun adı listesi verin. Bu sütunlardaki her unique değer birleşimi kendi grubunu oluşturur. Sonuç, her gruplama sütunu için bir düzey içeren bir MultiIndex barındırır; böylece boyutlar arası özetlerde tek adımda ayrıntıya inebilirsiniz.
df2 = pd.DataFrame({
'dept': ['Eng', 'Eng', 'HR', 'HR', 'Eng', 'HR'],
'level': ['L1', 'L2', 'L1', 'L2', 'L1', 'L1'],
'salary': [80000, 100000, 55000, 70000, 82000, 58000]
})
result = df2.groupby(['dept', 'level'])['salary'].mean()
print(result)
# dept level
# Eng L1 81000.0
# L2 100000.0
# HR L1 56500.0
# L2 70000.0MultiIndex Sonuçlarına Erişme
Birden fazla anahtara göre gruplama yaptığınızda sonuç indeksi bir MultiIndex olur. .loc['value'] ile belirli bir dış düzeye erişebilir ve demetlerle iç düzeylerde gezinebilirsiniz. reset_index() çağrısı, MultiIndex'i normal sütunlara dönüştürerek düzleştirir; bu, sonraki işlemler veya dışa aktarma için genellikle daha kullanışlıdır.
result = df2.groupby(['dept', 'level'])['salary'].mean()
# Access Engineering rows only
print(result.loc['Eng'])
# level
# L1 81000.0
# L2 100000.0
# Flatten to a regular DataFrame
print(result.reset_index())
# dept level salary
# 0 Eng L1 81000.0
# 1 Eng L2 100000.0as_index=False Kullanımı
Varsayılan olarak gruplama sütunları sonucun indeksi olur. as_index=False geçirmek, bunları normal sütunlar olarak tutar ve sonraki Pandas işlemlerine aktarması veya dışa aktarması daha kolay, düz bir DataFrame elde etmenizi sağlar. Bu, sonuç üzerinde reset_index() çağırmaya denktir.
flat = df2.groupby(['dept', 'level'], as_index=False)['salary'].mean()
print(flat)
# dept level salary
# 0 Eng L1 81000.0
# 1 Eng L2 100000.0
# 2 HR L1 56500.0
# 3 HR L2 70000.0Grup Başına Satırları Sayma
count(), her gruptaki boş olmayan değerlerin sayısını döndürür. Boş değerlerden bağımsız olarak grup başına toplam satır sayısını istiyorsanız bunun yerine size() kullanın. Verilerinizde eksik değerler olduğunda bu ayrım önemlidir; çünkü count(), NaN girdileri içeren grupların sayısını olduğundan az gösterecektir.
import numpy as np
df3 = pd.DataFrame({
'dept': ['Eng', 'Eng', 'HR', 'HR'],
'bonus': [5000, np.nan, 3000, 4000]
})
print(df3.groupby('dept')['bonus'].count()) # ignores NaN
# dept
# Eng 1
# HR 2
print(df3.groupby('dept')['bonus'].size()) # includes NaN rows
# dept
# Eng 2
# HR 2GroupBy Sonuçlarını Sıralama
Varsayılan olarak GroupBy, sonucu grup anahtarına göre sıralar. İlk görünme sırasını korumak için sort=False ile sıralamayı devre dışı bırakabilirsiniz; bu, büyük veri kümelerinde biraz daha hızlıdır. Sonucu DataFrame olarak elde ettikten sonra herhangi bir sütunda sort_values() kullanarak daha ileri bir sıralama yapabilirsiniz.
result = (df.groupby('dept', sort=False)['salary']
.mean()
.reset_index()
.sort_values('salary', ascending=False))
print(result)
# dept salary
# 0 Eng 91000.0
# 1 HR 61000.0GroupBy'ı Diğer Yöntemlerle Zincirleme
GroupBy sonuçları normal Series veya DataFrame'lerdir; bu nedenle üzerlerinde ek Pandas yöntemlerini hemen zincirleyebilirsiniz. Yaygın bir örüntü, toplama yapmak, ardından reset_index() çağırmak, sonra sütunları yeniden adlandırmak ve sort_values() uygulamaktır. Tüm bunları ara değişkenler oluşturmadan, okunabilir tek bir yöntem zincirinde yapabilirsiniz.
summary = (
df
.groupby('dept')['salary']
.agg(['mean', 'count'])
.rename(columns={'mean': 'avg_salary', 'count': 'headcount'})
.reset_index()
.sort_values('avg_salary', ascending=False)
)
print(summary)sum, mean ve count'u Birlikte Uygulama
Çoğu zaman grup başına birden fazla istatistiğe ihtiyaç duyarsınız. Birkaçını aynı anda hesaplamak için .agg() işlevine işlev adlarından oluşan bir liste verin. Sonuç, her işlev için bir sütun içeren bir DataFrame olur. Pandas bunların tümünü veriler üzerinde tek geçişte işlediği için bu yöntem, her toplamayı ayrı ayrı çağırmaktan daha verimlidir.
result = df.groupby('dept')['salary'].agg(['sum', 'mean', 'count', 'max'])
print(result)
# sum mean count max
# dept
# Eng 273000 91000.0 3 95000
# HR 122000 61000.0 2 62000Kategorik Sütunlara Göre Gruplama
Bir gruplama sütunu Categorical veri türüne sahip olduğunda Pandas, hiç satırı olmayanlar da dahil olmak üzere tüm kategorileri varsayılan olarak sonuca ekler. Bu, özet tablonuzun her kategoriyi her zaman göstermesini sağlamak için yararlı olabilir; ancak boş gruplar için NaN veya 0 içeren satırlar oluşturur. Bunu observed parametresiyle denetleyebilirsiniz (boş kategorileri atlamak için True olarak ayarlayın).
df['dept'] = df['dept'].astype('category')
# With observed=True, only groups that appear in data are included
print(df.groupby('dept', observed=True)['salary'].mean())
# dept
# Eng 91000.0
# HR 61000.0Hızlı Kontrol
Bu derste tek ve birden çok anahtarla GroupBy konusunu ne kadar anladığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: tek bir sütuna göre gruplama yapıp yaygın toplama yöntemlerini uygulamayı, boyutlar arası özetler oluşturmak için birden fazla sütuna göre gruplama yapmayı ve boş değerler bulunduğunda count() ile size() arasındaki farkı. Sırada, tek bir çağrıda birden fazla farklı istatistik hesaplamak için güçlü agg() yöntemini 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
“Tek ve Birden Çok Anahtarla GroupBy” dersi ücretsiz mi?
Evet — “Tek ve Birden Çok Anahtarla GroupBy” 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.
“Tek ve Birden Çok Anahtarla GroupBy” dersinde ne öğreneceğim?
groupby() ile bir veya daha fazla sütuna göre gruplandırın ve sum, mean, count ile min/max toplulaştırmalarını uygulayın. 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.
“Tek ve Birden Çok Anahtarla GroupBy” 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
- Böl-Aygula-Birleştir Deseni
- Tek ve Birden Çok Anahtarla GroupBy
- agg() Yöntemi
- GroupBy Dönüşümü ve Filtreleme