SQL Sorgularının Python Pandas Dataframe Karşılıkları-2 (GROUP BY, ORDER BY)

Merhabalar. Yaygın kullanılan SQL sorgularının Python pandas dataframe karşılıklarını bir örnek üzerinden paylaşmaya devam ediyoruz. Serimizin ilki olan bir önceki yazımızda SELECT ve WHERE cümlecikleri ile ilgili örnek yapmıştık. Bu yazıda kullanılacak veri kaynaklarına (sql ve pandas) ulaşmak için lütfen ilk yazıya müracaat ediniz.

1. GROUP BY

GROUP BY özellikle veri keşfinde çok sık kullanılan bir SQL cümleciğidir. GROUP BY ile verinin kategorilere göre nasıl dağıldığını ve hangi kategorinin ne kadar tekrarlandığını, ortalamasını, toplamını vb. bilgileri öğrenebiliriz.

select meslek, avg(aylik_gelir) as ortalama_gelir, avg(yas) as ortlama_yas
from simple_data
group by meslek
limit 5
meslekortalama_gelirortlama_yas
Doktor16125.0035.00
6750.0032.00
Memur4066.6636.00
Isci3500.0035.00
Tornacı4200.0043.00

Pandas ile

df.groupby(['meslek'])['aylik_gelir','yas'] \
.agg(['mean']) \
.reset_index() \
.head(5)
meslekaylik_geliryas
meanmean
0Berber9866.66666746.0
1Doktor16125.00000035.0
2Isci3500.00000035.0
3Memur4066.66666736.0
4Müzisyen10500.00000030.5

Arada fark var. Bunun iki sebebi var. SQL meslek sütunundaki boş değerleri de bir kategori olarak kabul ederken pandas bunu yapmadı. İkincisi pandas birşey belirtmememize rağmen mesleğe göre sıralama yaptı. SQL’de ise belirgin bir sıralama görünmüyor. Şimdi sıralama kriteri koyalım.

2. ORDER BY

select meslek, avg(aylik_gelir) as ortalama_gelir, avg(yas) as ortlama_yas
from simple_data
group by meslek
order by ortalama_gelir desc
limit 5
meslekortalama_gelirortlama_yas
Doktor1612535.0000000000000000
Müzisyen1050030.5000000000000000
Berber9866.66666666666646.0000000000000000
675032.0000000000000000
Pazarlamaci575029.0000000000000000

Pandas ile

df.groupby(['meslek'])['aylik_gelir','yas'] \
.agg(['mean']) \
.reset_index() \
.sort_values([('aylik_gelir','mean')], ascending=False) \
.head(5)
meslekaylik_geliryas
meanmean
1Doktor16125.00000035.0
4Müzisyen10500.00000030.5
0Berber9866.66666746.0
5Pazarlamaci5750.00000029.0
7Tuhafiyeci4800.00000047.0

Şimdi ikisi tarafından elde edilen sonuçlar birbirine yaklaştı. Farklılık yine NaN değerli mesleklerin pandas tarafından dikkate alınmasından kaynaklanıyor. Bir sonraki yazımızda UPDATE ve DELETE operasyonlarına örnekler vereceğiz. Hoşçakalın…

Yazar Hakkında
Toplam 180 yazı
Erkan ŞİRİN
Erkan ŞİRİN
10 yılı aşkın süredir yurtiçi ve yurtdışında sektörde büyük veri mühendisliği, platform yönetimi ve makine öğrenmesi ile ilgili çalışmalar yürütmekte ve aynı zamanda birçok kurum ve şirkete danışmanlık ve eğitimler vermektedir. Çalışma alanları: Data ve MLOps platformları, gerçek zamanlı veri işleme, değişen veriyi yakalama (CDC) ve Lakehouse.
Yorumlar (Yorum yapılmamış)

Bir yanıt yazın

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

×

Bir Şeyler Ara