agg() Yöntemi
agg() ile birden çok toplulaştırma işlevini aynı anda uygulayın ve farklı sütunlar için farklı istatistikler hesaplamak üzere bir sözlük aktarın.
agg() Yöntemi, 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.
Neden agg() Kullanılır?
Bir GroupBy nesnesi üzerinde doğrudan sum() veya mean() çağırmak size tek bir istatistik verir. Ancak gerçek analizlerde genellikle aynı anda birden fazla istatistiğe ihtiyaç duyulur; örneğin bölge başına toplam gelir, ortalama sipariş büyüklüğü ve sipariş sayısı. (Aggregate sözcüğünün kısaltması olan) agg() yöntemi, ayrı toplamaları çalıştırıp sonuçları birleştirmek yerine bunların tümünü tek ve verimli bir çağrıda hesaplamanızı sağlar.
İşlev Adları Listesi Geçirme
agg() işlevinin en basit kullanımı, işlev adı dizelerinden oluşan bir liste geçirmektir. Pandas her işlevi seçilen sütuna uygular ve her sütunun bir işleve karşılık geldiği bir DataFrame döndürür. Bu yaklaşım, 'sum', 'mean', 'min', 'max', 'count', 'std', 'median' ve diğerleri gibi tüm yerleşik toplama adlarıyla çalışır.
import pandas as pd
df = pd.DataFrame({
'region': ['East', 'West', 'East', 'West', 'East', 'West'],
'revenue': [200, 340, 150, 290, 310, 410],
'units': [20, 35, 15, 30, 28, 40]
})
result = df.groupby('region')['revenue'].agg(['sum', 'mean', 'count', 'max'])
print(result)
# sum mean count max
# region
# East 660 220.000000 3 310
# West 1040 346.666667 3 410Adlandırılmış Toplamalarla Çıktı Sütunlarını Yeniden Adlandırma
Bir dize listesi geçirdiğinizde çıktı sütunları işlevlerin kendi adlarıyla ('sum', 'mean' vb.) adlandırılır. Daha düzenli bir çıktı için adlandırılmış toplamaları kullanın: anahtarın istediğiniz sütun adı, değerin ise (column, function) demeti olduğu anahtar sözcük bağımsız değişkenleri geçirin. Bu, modern Pandas yaklaşımıdır ve kendini açıklayan kod üretir.
result = df.groupby('region').agg(
total_revenue=('revenue', 'sum'),
avg_revenue=('revenue', 'mean'),
order_count=('revenue', 'count'),
max_order=('revenue', 'max')
)
print(result)
# total_revenue avg_revenue order_count max_order
# region
# East 660 220.000000 3 310
# West 1040 346.666667 3 410Farklı Sütunlar İçin Farklı İşlevler
agg() işlevine, her anahtarın bir sütun adı ve her değerin o sütuna uygulanacak bir işlev (veya işlev listesi) olduğu bir sözlük geçirebilirsiniz. Böylece örneğin tek bir GroupBy çağrısında revenue üzerinde sum, units üzerinde ise mean hesaplayabilirsiniz.
result = df.groupby('region').agg({
'revenue': ['sum', 'mean'],
'units': ['sum', 'max']
})
print(result)
# revenue units
# sum mean sum max
# region
# East 660 220.000000 63 28
# West 1040 346.666667 105 40Sözlük agg() İşleminden Sütun MultiIndex'i
Sütun başına birden fazla işlev içeren bir sözlük geçirdiğinizde sonuçta sütunlarda bir MultiIndex oluşur. İlk düzey özgün sütun adıdır, ikinci düzey ise işlev adıdır. Bir liste üreteci kullanarak bu sütun adlarını tek bir dize hâline getirebilir ve sonucu sonraki işlemlerde daha kolay kullanabilirsiniz.
result = df.groupby('region').agg({'revenue': ['sum', 'mean'], 'units': 'sum'})
# Flatten MultiIndex columns
result.columns = ['_'.join(c).strip() for c in result.columns]
print(result.columns.tolist())
# ['revenue_sum', 'revenue_mean', 'units_sum']agg() İçinde Özel İşlevleri Kullanma
Dize adlarına ek olarak agg() işlevine herhangi bir Python çağrılabilir nesnesi geçirebilirsiniz. İşlev, bir Series (tek bir grupta o sütunun değerleri) alır ve bir skaler döndürmelidir. Bir lambda veya adlandırılmış işlev geçirebilirsiniz. Özel işlevler daha esnektir; ancak C düzeyindeki iyileştirmelerden yararlanamadıkları için yerleşik adlandırılmış işlevlerden daha yavaştır.
def revenue_range(s):
return s.max() - s.min()
result = df.groupby('region')['revenue'].agg(['sum', revenue_range])
print(result)
# sum revenue_range
# region
# East 660 160
# West 1040 120Özel İşlevlerle Adlandırılmış Toplamalar
Adlandırılmış toplama söz dizimi yalnızca dize adlarıyla değil, çağrılabilir işlevlerle de çalışır. Anahtar sözcük bağımsız değişkeninin değeri olarak, işlevin bir Series kabul edip skaler döndürdüğü (column, function) demetini geçirmeniz yeterlidir. Bu, yerleşik işlevleri özel mantıkla bir arada kullandığınızda bile kodunuzu okunabilir tutar.
result = df.groupby('region').agg(
total=('revenue', 'sum'),
spread=('revenue', lambda s: s.max() - s.min()),
top_units=('units', 'max')
)
print(result)
# total spread top_units
# region
# East 660 160 28
# West 1040 120 40Sütun Seçmeden Toplama Yapma
Belirli bir sütunu seçmeden bir GroupBy üzerinde agg() çağırdığınızda Pandas, işlevi DataFrame'deki her sayısal sütuna uygular. Bu, tüm sayısal sütunların özetini aynı anda elde etmenin hızlı bir yoludur. Sayısal olmayan veri türlerine sahip sütunların çoğu toplama işleminde sessizce atlanacağını unutmayın.
# Aggregate all numeric columns in one call
result = df.groupby('region').agg(['sum', 'mean'])
print(result)
# revenue units
# sum mean sum mean
# region
# East 660 220.000000 63 21.00
# West 1040 346.666667 105 35.00agg() ile reset_index() Birleştirme
agg() işleminden sonra gruplama sütunları indeks olur. Yaygın bir örüntü, grup anahtarlarının normal sütunlar olduğu düz bir DataFrame elde etmek için hemen reset_index() çağırmaktır. Ardından sonucu diğer tüm DataFrame'ler gibi yeniden adlandırabilir, sıralayabilir ve filtreleyebilirsiniz; böylece sonucu sonraki işlemlere aktarmak veya dışa aktarmak kolaylaşır.
summary = (
df.groupby('region')
.agg(total=('revenue', 'sum'), orders=('revenue', 'count'))
.reset_index()
.sort_values('total', ascending=False)
)
print(summary)
# region total orders
# 1 West 1040 3
# 0 East 660 3agg() ile transform() ve apply() Karşılaştırması
Üç GroupBy yöntemini birbirinden ayırmak önemlidir: agg(), her grubu bir skaler değere indirger ve özgün veriden daha az satır içeren bir sonuç üretir. transform(), girdiye ait aynı şekle sahip bir dizi döndürür; böylece grup düzeyindeki istatistikleri yeni sütunlar olarak ekleyebilirsiniz. apply() en esnek, ancak aynı zamanda en yavaş yöntemdir ve sonraki derste ele alınacaktır.
# agg: one row per group
print(df.groupby('region')['revenue'].agg('mean'))
# region
# East 220.0
# West 346.7
# transform: one row per original row (group mean broadcast back)
df['group_mean'] = df.groupby('region')['revenue'].transform('mean')
print(df[['region', 'revenue', 'group_mean']].head())Uygulamalı Örnek: Satış Özeti
Gerçekçi, baştan sona bir örnek şöyledir: toplam geliri, ortalama sipariş değerini, sipariş sayısını ve bölge başına gelir aralığını içeren; sütun adları düzenli ve toplam gelire göre azalan biçimde sıralanmış bir satış özeti tablosu oluşturmak. Bu örüntü ürün, finans ve pazarlama analitiği iş akışlarında doğrudan uygulanabilir.
summary = (
df.groupby('region')
.agg(
total_revenue=('revenue', 'sum'),
avg_order=('revenue', 'mean'),
num_orders=('revenue', 'count'),
revenue_range=('revenue', lambda s: s.max() - s.min())
)
.reset_index()
.sort_values('total_revenue', ascending=False)
.round(2)
)
print(summary)Hızlı Kontrol
Bu derste ele alınan agg() yöntemini ne kadar anladığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: agg() ile aynı anda birden fazla toplama hesaplamayı, düzenli sütun adları için adlandırılmış toplamaları kullanmayı ve bir sözlük kullanarak farklı sütunlara farklı işlevler uygulamayı. Sırada, grup düzeyindeki bilgileri özgün DataFrame'e geri ekleyen transform() ve filter() yöntemlerini inceleyeceğiz.
Sıkça Sorulan Sorular
“agg() Yöntemi” dersi ücretsiz mi?
Evet — “agg() Yöntemi” 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.
“agg() Yöntemi” dersinde ne öğreneceğim?
agg() ile birden çok toplulaştırma işlevini aynı anda uygulayın ve farklı sütunlar için farklı istatistikler hesaplamak üzere bir sözlük aktarı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 3. dersidir.
“agg() Yöntemi” 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