Data Analysis

Pandas GroupBy ve Toplama İşlemlerinde Ustalaşma: Kapsamlı Bir Kılavuz

Spread the love

Pandas, veri manipülasyonu ve analizi için güçlü bir Python kütüphanesidir. En sık kullanılan özelliklerinden biri, verileri gruplandırma ve toplu hesaplamalar yapma yeteneğidir. Bu makale, groupby() yöntemini kullanarak verileri gruplandırdıktan sonra toplam toplamların verimli bir şekilde hesaplanması için çeşitli yöntemleri inceleyerek farklı karmaşıklık seviyeleri ve istenen çıktı formatları için çözümler sunmaktadır.

İçerik Tablosu:

groupby() ile Temel Toplama

Gruplandırmadan sonra bir sütunun toplamını hesaplamanın en basit yolu, sum() yöntemiyle doğrudan groupby() kullanmaktır:


import pandas as pd

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

# 'Group'a göre grupla ve 'Value'u topla
grouped_sum = df.groupby('Group')['Value'].sum()
print(grouped_sum)

Bu, her grup için ‘Value’un toplamını içeren bir Seriyi özlü bir şekilde üretir.

agg() ile Çoklu Toplamalar

agg() yöntemi, birden fazla toplu istatistiğin aynı anda verimli bir şekilde hesaplanmasına olanak tanır. Bu, yalnızca toplamdan fazlasına ihtiyacınız olduğunda özellikle kullanışlıdır:


import pandas as pd

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

# Her grup için toplamı, ortalamayı ve sayımı hesapla
aggregated = df.groupby('Group')['Value'].agg(['sum', 'mean', 'count'])
print(aggregated)

Bu tek satırlık kod, her grup için ‘Value’un toplamını, ortalamasını ve sayısını hesaplayarak bir DataFrame oluşturur.

apply() ile Özel Toplama

Özel toplama mantığı gerektiren daha karmaşık senaryolar için, apply() yöntemi maksimum esneklik sağlar. İstenilen hesaplamaları gerçekleştirmek için bir fonksiyon tanımlayabilirsiniz:


import pandas as pd
import numpy as np

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

def custom_agg(x):
    return pd.Series({'sum': x.sum(), 'range': x.max() - x.min()})

# Özel toplama fonksiyonunu uygula
result = df.groupby('Group')['Value'].apply(custom_agg).reset_index()
print(result)

Burada, özel bir fonksiyon her grup için hem toplamı hem de aralığı hesaplar.

groupby() ve cumsum() ile Kümülatif Toplamlar

Her grup içinde kümülatif toplamlar elde etmek için groupby()‘i cumsum() yöntemi ile birleştirin:


import pandas as pd

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

# Her grup için kümülatif toplamı hesapla
df['Cumulative Sum'] = df.groupby('Group')['Value'].cumsum()
print(df)

Bu, her grup içindeki toplamı gösteren yeni bir sütun ekler.

pivot_table() ile Veri Yeniden Şekillendirme

Özellikle birden fazla gruplama değişkeniyle uğraşırken, toplanan verilerin daha görsel olarak çekici ve kolayca analiz edilebilir bir gösterimi için pivot_table() kullanın:


import pandas as pd

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Category': ['X', 'Y', 'X', 'Y', 'Z', 'X'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

pivot_table = pd.pivot_table(df, values='Value', index='Group', columns='Category', aggfunc='sum', fill_value=0)
print(pivot_table)

Bu, verileri özetleyen ve her grup içindeki farklı kategorilerdeki toplamları karşılaştırmayı kolaylaştıran bir pivot tablo oluşturur.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir