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

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…

Hakkında Erkan ŞİRİN

2014'ten beri hem akademik hem de sektörde pratik anlamda büyük veri ve veri bilimi ile ilgili çalışmalar yürütmektedir. Halihazırda İmpektra Bilişim A.Ş.'de büyük veri yöneticisi olarak çalışmakta olup aynı zamanda Gazi Üniversitesi Yönetim Bilişim Sistemleri doktora öğrencisidir. Büyük veri ve veri bilimi ile ilgili birçok kurum ve şirkete eğitimler vermekte ve projeler icra etmektedir. Çalışma alanları: büyük veri platformlarının kurulum ve yönetimi, büyük veri üzerinde makine öğrenmesi, olağan dışılık tespiti, sahtecilik tespiti, veri hazırlama sürecidir.

GÖZ ATMAK İSTEYEBİLİRSİNİZ

Python Pandas Dataframe’i Elasticsearch’e Yazmak

Merhabalar bu yazımızda Python Pandas Dataframe verisini Python kullanarak Elasticsearch’e yazacağız. Şükür ki Python çok …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir