Hangi Group by?
“VBO Günlüğü” serisinin ikinci yazısına hoş geldiniz dostlar. Bu hafta Numpy, Pandas’ı ve veri görselleştirme kütüphanemiz Matplotlib’i…
Hangi Group by?
“VBO Günlüğü” serisinin ikinci yazısına hoş geldiniz dostlar. Bu hafta Numpy,Pandas’ı ve veri görselleştirme kütüphanemiz Matplotlib’i görmekle beraber hep karıştırdığımız loc-iloc yapısını ve groupby yapısını gördük. İlk anda zor gibi görünüp beni heyecanlandırsa da kolay sayılabilecek bir ödevle ve birbirini destekleme konusunda fevkalade olan grubumuzla bu haftayı tamamladık. 😊

Bu yazıda size hem tanıdığım hem de tanımadığım bir fonksiyon olan “group by”ı anlatacağım. Bunu yaparken de farklı bir yol izleyeceğim. Hemen açıklayayım, veri dünyasına benim gibi SQL Server’da giriş yaptıysanız zaten kendisini tanıyorsunudur. Python’da da mevcut bu güzel fonksiyon. Sizlere Python’daki kullanımını anlatrıken SQL Server’da kullanım şeklini de göstereceğim. Bi taşla iki kuş deyip yazıya geçelim.
Ne için group by kullanılır?
“Group by”ı, veri seti içeriside yer alan bilgilerin ortak özelliklerine göre veri setinde “aggregate function”ları yani toplama, maksimum-minimum bulma, saydırma ve ortalama alma gibi işlemleri yapabilmemiz için kullanırız. Çalışma mantığı ise şöyle; Veri setindeki bir bölgeye aggregate function’lardan birini veya bir kaçını uyguluyor, bunu yaparken de bir koşul yani bir kırılım istiyor. Hemen bir örnekle açılkayalım:

Burada bize verilen veri setinde çeşitli ülkelerin bir üründen kaç tane aldığı ve ne kadar ödedikleri bilgileri mevcut ve bizden ülkelerin bu ürüne toplam ne kadar ödediğine dair bilgi istenmiş. Bakın bir aggregate function olan toplam istenmiş ve bunu yaparken de ‘ülkelerin’ diyerek group by koşulunu yani kırılımını vermiş. Mantıksal olarak süreç şöyle ilerler: veri setinde bak, koşul olarak ülke verildiği için aynı isimdeki ülkeleri grupla, son olarak her ülkenin kendi içindeki tutarı topla ve tek bir satır olarak yaz.
Peki biz bunu Python’da ve tabii SQL Server’da nasıl kullanıyoruz?
Python’da “group by”ın âdâbımuaşereti yani syntex’ı şöyledir:
#python3
veri_setinin_adi.groupby(["Satılan Ülke"]).agg({"Tutar": "sum"}
Hmm.. kafama yattı gibi ama ben SQL Server biliyorum bir de öyle anlatsana derseniz onun kod bloğu da şöyle:
SELECT Satilan_Ulke, SUM(Tutar)
FROM TABLO_ADI
GROUP BY Satilan_Ulke
Bir koşula bir koşula bir tane mi aggregate function mu uygulanabiliyor? Tabii ki de hayır. Bir koşula birden çok aggregate function uygulanabileceği gibi birden çok koşula tek bir aggregate function da uyuglanabilir. Hemen örneklendirelim:
Mesela ülkelerin toplam satış tutarıyla beraber ortalama satış tutarı da gelsin:
#python3
veri_setinin_adi.groupby(["Satılan Ülke"]).agg({"Tutar": ["sum","mean"]}
🤔 SQL Server’daki karşılığı ne diye düşünüyorsanız ⬇️
SELECT Satilan_Ulke, SUM(Tutar), AVG(Tutar)
FROM TABLO_ADI
GROUP BY Satilan_Ulke
Not: Python’da ortlama için “mean” fonsiyonunu kullanıyorken SQL Server için bu “avg” fonksiyonudur.
Şimdi ise birden fazla kırılıma aggregate function uygulayalım ve bakalım nasıl oluyormuş. Mesela hem ülkelere göre hem de -farzedelim ki şehir sütunumuz olsun- şehirlere göre bir tutar toplamı alalım.
#python3
veri_setinin_adi.groupby(["Satılan Ülke","Şehir"]).agg({"Tutar": "sum"}
SQL Server dilinde de:
SELECT Satilan_Ulke, Sehir, SUM(Tutar)
FROM TABLO_ADI
GROUP BY Satilan_Ulke
Şimdi taşlar biraz daha yerine oturduysa “group by”ımızın en çok kullanabileceğimiz parametrelerine bakalım :)
veri_setinin_adigroupby(
by=None,
axis=0,
sort=True,
dropna=True)
“*by*” parametresikırılımları verdiğimiz parametresi aslında. Aşağıdaki iki kod bloğu da aynı sonucu döndürecek size.
veri_setinin_adi.groupby(["Satılan Ülke"])
=
veri_setinin_adi.groupby(by=["Satılan Ülke"])
“*axis*” parametresi ön tanımlı olarak 0 geliyor. Bu gruplamayı satırlara göre yapmamızı ve bize tek bir satır döndğrmemizi sağlıyor. Eğer ön tanımlı değerini 0'dan 1'e çekeresek bize sutün bazında bir gruplama yapıp tek bir sütun döndürecekt.
“sort” parametresi ön tanımlı olarak “True” geliyor. Bu bize çoktan azalana doğru bir sıralama yapmamızı sağlıyor. “False” dersek azdan çoğa doğru bir sıralamamız oalcak.
“*dropna**”***parametresi de ön tanımlı olarak “True” geliyor. Gruplama sonucunda boş değer gelirse onu siliyor bizim için.
Yazımı okuduğunuz için teşekkürler. Daha iyi bilgilerle görüşmek dileğiyle. 😃
메타데이터
- post_id
- 722d9f2b7dbd
- slug
- hangi-group-by-722d9f2b7dbd
- url
- https://medium.com/@fmcbey/hangi-group-by-722d9f2b7dbd
- canonical_url
- https://medium.com/@fmcbey/hangi-group-by-722d9f2b7dbd
- author_url
- https://medium.com/@fmcbey
- status
- ok
- fetched_at
- 2026-07-27 17:46:35