0Pricing
Pandas & NumPy Academy · Ders

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  410

Adlandı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        410

Farklı 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  40

Sö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         40

Sü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.00

agg() 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       3

agg() 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

  1. Böl-Aygula-Birleştir Deseni
  2. Tek ve Birden Çok Anahtarla GroupBy
  3. agg() Yöntemi
  4. GroupBy Dönüşümü ve Filtreleme
← Pandas & NumPy Academy Sayfasına Dön