Anasayfa / Program/Sorgulama Dilleri / Python / SQL Sorgularının Python Pandas Dataframe Karşılıkları-1 (SELECT, WHERE)

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

Merhabalar. Bu yazımızda yaygın kullanılan SQL sorgularının Python pandas dataframe karşılıklarını 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
5Yasemin23Bursa4800

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.

Hakkında 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. 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

GNU/Linux üzerinde Bash Komutları ile Veri Seti Keşfi ve Ön İşleme-1

Merhaba, Bugün sizlerle birlikte Ubuntu GNU/Linux üzerinde Bash komutları ile veri setini inceleme ve bazı …

Bir cevap yazın

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