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()
  sirano isim yas meslek sehir aylik_gelir
0 1 Cemal 35 Isci Ankara 3500
1 2 Ceyda 42 Memur Kayseri 4200
2 3 Timur 30 Müzisyen Istanbul 9000
3 4 Burcu 29 Pazarlamaci Ankara 4200
4 5 Yasemin 23 NaN Bursa 4800

1. SELECT

select sirano, isim, yas, meslek, sehir, aylik_gelir
from public.simple_data
limit 5
sirano isim yas meslek sehir aylik_gelir
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

Pandas ile

df[['sirano', 'isim', 'yas', 'meslek', 'sehir', 'aylik_gelir']] \
.head(5)
  sirano isim yas meslek sehir aylik_gelir
0 1 Cemal 35 Isci Ankara 3500
1 2 Ceyda 42 Memur Kayseri 4200
2 3 Timur 30 Müzisyen Istanbul 9000
3 4 Burcu 29 Pazarlamaci Ankara 4200
4 5 Yasemin 23 NaN Bursa 4800

2. WHERE

select * from simple_data
where sehir = 'Istanbul'
limit 5
sirano isim yas meslek sehir aylik_gelir
3 Timur 30 Müzisyen Istanbul 9000
7 Dilek 29 Pazarlamaci Istanbul 7300
8 Murat 31 Müzisyen Istanbul 12000
10 Muhittin 46 Berber Istanbul 12000

Pandas ile

df[df['sehir'] == 'Istanbul'].head(5)
  sirano isim yas meslek sehir aylik_gelir
2 3 Timur 30 Müzisyen Istanbul 9000
6 7 Dilek 29 Pazarlamaci Istanbul 7300
7 8 Murat 31 Müzisyen Istanbul 12000
9 10 Muhittin 46 Berber Istanbul 12000

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

select * from simple_data
where sehir = 'Istanbul' and yas > 40
limit 5
sirano isim yas meslek sehir aylik_gelir
10 Muhittin 46 Berber Istanbul 12000

Pandas ile

df[ (df['sehir'] == 'Istanbul') & (df['yas'] > 40)].head(5)
  sirano isim yas meslek sehir aylik_gelir
9 10 Muhittin 46 Berber Istanbul 12000

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

Yazar Hakkında
Toplam 171 yazı
Erkan ŞİRİN
Erkan ŞİRİN
2014'ten beri hem akademik alanda hem de sektörde pratik anlamda büyük veri ve veri bilimi ile ilgili çalışmalar yürütmektedir. Büyük veri ve veri bilimi ile ilgili birçok kurum ve şirkete danışmanlık ve eğitimler vermekte, 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 ve sahtecilik tespiti, akan veri işleme ve veri hazırlama sürecidir.
Yorumlar (1 Yorum)
Hakan
Hakan Cevapla
- 23:30

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

Bir cevap yazın

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

×

Bir Şeyler Ara