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 Toplamaagg()
ile Çoklu Toplamalarapply()
ile Özel Toplamagroupby()
vecumsum()
ile Kümülatif Toplamlarpivot_table()
ile Veri Yeniden Şekillendirme
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.