0Pricing
Pandas & NumPy Academy · Ders

Böl-Aygula-Birleştir Deseni

groupby işleminin kavramsal akışını öğrenin: DataFrame'i gruplara bölme, bir işlev uygulama ve sonuçları birleştirme.

Böl-Aygula-Birleştir Deseni, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 1. 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.

GroupBy Nedir?

GroupBy işlemi, veri analizindeki en güçlü kalıplardan biridir. Bir DataFrame'i gruplara ayırmanıza, her gruba bağımsız olarak bir işlev uygulamanıza ve ardından sonuçları yeni bir yapıda birleştirmenize olanak tanır. Bu iş akışı, istatistikçi Hadley Wickham'ın ortaya attığı böl-ayır-uygula-birleştir kalıbı olarak bilinir.

Bölme Adımı

Bölme adımında Pandas, DataFrame'i bir veya daha fazla sütundaki benzersiz değerlere göre alt DataFrames nesnelerine ayırır. Örneğin verilerinizde 'North', 'South' ve 'West' gibi değerler içeren bir region sütunu varsa, bölme adımı üç ayrı grup oluşturur. Henüz hiçbir veri taşınmaz veya kopyalanmaz; Pandas yalnızca hangi satırların hangi gruba ait olduğunu kaydeder.

import pandas as pd

df = pd.DataFrame({
    'region': ['North', 'South', 'North', 'West', 'South'],
    'sales': [200, 150, 300, 180, 220]
})

# split: create a GroupBy object
grouped = df.groupby('region')
print(type(grouped))  # DataFrameGroupBy

Uygulama Adımı

Uygulama adımında her gruba bağımsız olarak bir işlev uygulanır. Bu işlev sum() veya mean() gibi yerleşik bir toplulaştırma işlevi ya da sizin tanımladığınız özel bir işlev olabilir. Her grubun satırları işleve aktarılır ve sonuç olarak bir skaler, Series veya DataFrame döndürülür.

# apply: compute the sum of 'sales' within each region group
total_sales = grouped['sales'].sum()
print(total_sales)
# region
# North    500
# South    370
# West     180
# Name: sales, dtype: int64

Birleştirme Adımı

Birleştirme adımında Pandas, grup başına elde edilen sonuçları otomatik olarak tek bir nesnede (genellikle bir Series veya DataFrame) yeniden bir araya getirir. Grup anahtarları sonucun dizini olur. Bir GroupBy nesnesi üzerinde toplulaştırma yöntemi çağırdığınızda bu adım görünmez biçimde gerçekleşir ve her grup için bir satır içeren düzenli bir özet tablosu elde edersiniz.

# combine happens automatically — result is a Series indexed by 'region'
print(total_sales.index)   # Index(['North', 'South', 'West'])
print(total_sales.values)  # [500, 370, 180]

GroupBy Nesnesi Oluşturma

df.groupby(column) çağrısı yaparak bir GroupBy nesnesi oluşturursunuz. Bu aşamada hiçbir hesaplama yapılmaz; bu, tembel bir nesnedir. Grupları görmek için üzerinde yineleme yapabilir veya hesaplamayı başlatmak için bir toplulaştırma yöntemi zincirleyebilirsiniz. as_index=False geçirmek, sonuçta gruplama sütununu dizin yerine normal bir sütun olarak tutar.

grouped = df.groupby('region', as_index=False)
result = grouped['sales'].sum()
print(result)
#   region  sales
# 0  North    500
# 1  South    370
# 2   West    180

Gruplar Üzerinde Yineleme

Her grubu ayrı ayrı incelemek için bir GroupBy nesnesi üzerinde yineleme yapabilirsiniz. Her yinelemede (group_key, sub_dataframe) biçiminde bir demet elde edilir. Bu, hata ayıklama veya her grubu isteğe bağlı Python koduyla işlemek istediğiniz durumlar için kullanışlıdır. Ancak üretim ortamlarında performans için açık yineleme yerine vektörleştirilmiş toplulaştırma yöntemlerini tercih edin.

for name, group in df.groupby('region'):
    print(f'--- {name} ---')
    print(group)
# --- North ---
#   region  sales
# 0  North    200
# 2  North    300
# --- South ---
#   region  sales
# 1  South    150
# 4  South    220

Yaygın Toplulaştırma İşlevleri

Pandas GroupBy birçok yerleşik toplulaştırma işlevini destekler: sum(), mean(), count(), min(), max(), std(), median() ve daha fazlası. Bu işlevler yüksek düzeyde optimize edilmiştir ve tüm gruplarda tek geçişte çalışır. Yerleşik bir işlev mevcut olduğunda, özel bir Python işlevi yazmak yerine her zaman onu tercih edin.

print(df.groupby('region')['sales'].mean())
# region
# North    250.0
# South    185.0
# West     180.0

print(df.groupby('region')['sales'].count())
# region
# North    2
# South    2
# West     1

Birden Çok Sütunu Aynı Anda Gruplama

Toplama yöntemlerini, toplama yöntemini çağırmadan önce birden fazla sütun seçerek aynı anda uygulayabilir veya tüm sayısal sütunları toplamak için sütun seçimini atlayabilirsiniz. Sonuç, Series yerine bir DataFrame olur ve toplanan her değişken için bir sütun içerir.

df2 = pd.DataFrame({
    'region': ['North', 'South', 'North', 'South'],
    'units': [10, 8, 12, 9],
    'revenue': [200, 160, 240, 180]
})

print(df2.groupby('region').sum())
#         units  revenue
# region
# North      22      440
# South      17      340

GroupBy Zihinsel Modeli

GroupBy'ı SQL'deki GROUP BY yan tümcesi gibi düşünebilirsiniz. Pandas kodu df.groupby('region')['sales'].sum(), SQL'deki SELECT region, SUM(sales) FROM df GROUP BY region ifadesine denktir. Bu paralelliği anlamak, iki araç arasında geçiş yapmanıza ve pipeline'ınız için doğru soyutlamayı seçmenize yardımcı olur.

# Pandas GroupBy is equivalent to SQL GROUP BY
# SQL:    SELECT region, SUM(sales) FROM df GROUP BY region
# Pandas: df.groupby('region')['sales'].sum()

result = df.groupby('region')['sales'].sum().reset_index()
result.columns = ['region', 'total_sales']
print(result)

Neden Bunun Yerine Döngü Kullanmayalım?

unique değerler üzerinde döngü kurup istatistikleri elle hesaplamak yerine neden bunu yapmadığınızı merak edebilirsiniz. Yanıt performans ve okunabilirliktir. Gruplar üzerinde çalışan bir Python döngüsü, özellikle büyük veri kümelerinde, tek bir vektörleştirilmiş groupby çağrısından çok daha yavaştır. GroupBy işlemleri dahili olarak derlenmiş C kodunda çalışır; bu nedenle eşdeğer Python döngülerinden 10-100 kat daha hızlıdır.

# Slow approach with a loop
results = {}
for region in df['region'].unique():
    subset = df[df['region'] == region]
    results[region] = subset['sales'].sum()

# Fast approach with GroupBy
results_fast = df.groupby('region')['sales'].sum().to_dict()
# Both give the same answer, but GroupBy is orders of magnitude faster

Birden Çok Gruplama Anahtarıyla GroupBy

Daha ince ayrıntı düzeyine ihtiyaç duyduğunuzda, groupby() işlevine bir liste vererek birden fazla sütuna göre gruplama yapabilirsiniz. Sonuç, her düzeyin bir gruplama sütununa karşılık geldiği bir MultiIndex içerir. Örneğin hem 'region' hem de 'quarter' sütunlarına göre gruplama yapmak, her bölge-çeyrek birleşimi için toplamları verir.

df3 = pd.DataFrame({
    'region': ['North', 'North', 'South', 'South'],
    'quarter': ['Q1', 'Q2', 'Q1', 'Q2'],
    'sales': [200, 300, 150, 220]
})

print(df3.groupby(['region', 'quarter'])['sales'].sum())
# region  quarter
# North   Q1         200
#         Q2         300
# South   Q1         150
#         Q2         220

Hızlı Kontrol

Bu derste ele alınan böl-parçala-uygula-birleştir örüntüsünü ne kadar anladığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: tüm GroupBy işlemlerinin temelini oluşturan böl-parçala-uygula-birleştir örüntüsünü, df.groupby() ile bir GroupBy nesnesi oluşturmayı ve her grup için bir sonuç elde etmek üzere sum() ve mean() gibi yerleşik toplama yöntemlerini uygulamayı. Sırada, daha fazla toplama yöntemiyle tek ve birden çok anahtara göre gruplamayı inceleyeceğiz.

Sıkça Sorulan Sorular

“Böl-Aygula-Birleştir Deseni” dersi ücretsiz mi?

Evet — “Böl-Aygula-Birleştir Deseni” 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.

“Böl-Aygula-Birleştir Deseni” dersinde ne öğreneceğim?

groupby işleminin kavramsal akışını öğrenin: DataFrame'i gruplara bölme, bir işlev uygulama ve sonuçları birleştirme. 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 1. dersidir.

“Böl-Aygula-Birleştir Deseni” 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