SQL Sorgularının Python Pandas Dataframe Karşılıkları (PANDAS SQL)-1 (SELECT, WHERE)

Merhabalar. Bu yazımızda yaygın kullanılan SQL sorgularının Python pandas dataframe karşılıklarını (Pandas SQL) bir örnek üzerinden paylaşmaya çalışacağım. Veri biliminin en zor ve meşakkatli aşaması veri hazırlığıdır. Hem SQL hem de pandas kendi alanlarında veri hazırlığında çok önemli rol oynarlar. Eğer bu ikisinden birini çok iyi bilmiyorsanız (Pythonistler için söylüyorum, sql yanındaki python değil R, Spark vb. olabilir) veri biliminde hiçbir ciddi proje yapamazsınız. Çünkü gerçek dünyada algoritmaya sunulacak veri asla kek gibi karşınızda durmaz. Ne yazık ki genelde tırnaklarınızla kazıyarak veriyi sağdan soldan alır, getirir, birleştirir, temizler ve kullanılacak hale getirirsiniz. İşte bu safhada SQL ve Pandas eliniz ayağınız her şeyiniz olur. Bu yazımızın amacı SQL’i bilen ancak pandas ile veri manipülasyonunu iyi bilmeyenlere SQL ile düşünüp bunu pandas ile nasıl uygulayacağını göstermektir.

Pandas dataframe oluşturmak için kullanılacak csv dosyasına buradan ulaşabilirsiniz. SQL veri tabanı olarak PostgreSQL kullandık. Burada tablo yaratmak ve içine veri girmek için aşağıdaki kodları kullanabilirsiniz.

DROP TABLE public.simple_data;

CREATE TABLE public.simple_data (
	sirano varchar(50) NULL,
	isim varchar(50) NULL,
	yas int4 NULL,
	meslek varchar(50) NULL,
	sehir varchar(50) NULL,
	aylik_gelir float8 NULL
);

INSERT INTO public.simple_data
(sirano, isim, yas, meslek, sehir, aylik_gelir)
VALUES
(1,'Cemal',35,'Isci','Ankara',3500),
(2,'Ceyda',42,'Memur','Kayseri',4200),
(3,'Timur',30,'Müzisyen','Istanbul',9000),
(4,'Burcu',29,'Pazarlamaci','Ankara',4200),
(5,'Yasemin',23,'','Bursa',4800),
(6,'Ali',33,'Memur','Ankara',4250),
(7,'Dilek',29,'Pazarlamaci','Istanbul',7300),
(8,'Murat',31,'Müzisyen','Istanbul',12000),
(9,'Ahmet',33,'Doktor','Ankara',18000),
(10,'Muhittin',46,'Berber','Istanbul',12000),
(11,'Hicaziye',47,'Tuhafiyeci','Ankara',4800),
(12,'Harun',43,'Tornacı','Ankara',4200),
(13,'Hakkı',33,'Memur','Çorum',3750),
(14,'Gülizar',37,'Doktor','İzmir',14250),
(15,'Şehmuz',41,'','Ankara',8700),
(16,'Gençay',46,'Berber','Ankara',8800),
(16,'Gençay',46,'Berber','Ankara',8800);

Pandas Dataframe Okuma

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/erkansirin78/datasets/master/simple_data.csv")
df.head()
 siranoisimyasmesleksehiraylik_gelir
01Cemal35IsciAnkara3500
12Ceyda42MemurKayseri4200
23Timur30MüzisyenIstanbul9000
34Burcu29PazarlamaciAnkara4200
45Yasemin23NaNBursa4800

1. SELECT

select sirano, isim, yas, meslek, sehir, aylik_gelir
from public.simple_data
limit 5
siranoisimyasmesleksehiraylik_gelir
1Cemal35IsciAnkara3500
2Ceyda42MemurKayseri4200
3Timur30MüzisyenIstanbul9000
4Burcu29PazarlamaciAnkara4200
5Yasemin23 Bursa4800

Pandas ile

df[['sirano', 'isim', 'yas', 'meslek', 'sehir', 'aylik_gelir']] \
.head(5)
 siranoisimyasmesleksehiraylik_gelir
01Cemal35IsciAnkara3500
12Ceyda42MemurKayseri4200
23Timur30MüzisyenIstanbul9000
34Burcu29PazarlamaciAnkara4200
45Yasemin23NaNBursa4800

2. WHERE

select * from simple_data
where sehir = 'Istanbul'
limit 5
siranoisimyasmesleksehiraylik_gelir
3Timur30MüzisyenIstanbul9000
7Dilek29PazarlamaciIstanbul7300
8Murat31MüzisyenIstanbul12000
10Muhittin46BerberIstanbul12000

Pandas ile

df[df['sehir'] == 'Istanbul'].head(5)
 siranoisimyasmesleksehiraylik_gelir
23Timur30MüzisyenIstanbul9000
67Dilek29PazarlamaciIstanbul7300
78Murat31MüzisyenIstanbul12000
910Muhittin46BerberIstanbul12000

Where cümleciğinde birden fazla koşul ile filtreleme

select * from simple_data
where sehir = 'Istanbul' and yas > 40
limit 5
siranoisimyasmesleksehiraylik_gelir
10Muhittin46BerberIstanbul12000

Pandas ile

df[ (df['sehir'] == 'Istanbul') & (df['yas'] > 40)].head(5)
 siranoisimyasmesleksehiraylik_gelir
910Muhittin46BerberIstanbul12000

Bu yazımızı burada biritelim serimize bir sonraki yazı ile devam edeceğiz.

Yazar Hakkında
Toplam 174 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 (1 Yorum)
Hakan
Hakan Yanıtla
- 23:30

Emeğinize sağlık. Bilgilendirici oldu.

Bir yanıt yazın

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

×

Bir Şeyler Ara