SQL içerisinden çektiğimiz veriler ile DataFrame nasıl oluşturulur?

Furkan Tolga Yüce
Data Runner
Published in
2 min readJun 28, 2019

Pandas ile veri manipülasyonu işlemlerine başlamadan önce verilerimiz ile bir DataFrame oluşturulması gerekir. DataFrame oluşturmanın çeşitli yolları vardır. Excell, csv, HTML, SQL vb. içerisindeki verilerle oluşturabiliriz.

Şirketler, büyük veri setlerine sahip oldukları için, hem hız hemde güvenlik avantajı sebebiyle verilerini veri tabanı yönetim sistemlerinde (SQL) saklamayı tercih ederler.

Bir şirketin verileri üzerinden ML modeli geliştirmek istediğinizde veya sadece görselleştirme yapmak istediğinizde bile öncelikle verilere ulaşmanız gerekecektir. Elbette bir veritabanı yöneticisi sizin için veriyi çekip csv formatında verebilir. Ama tahmin edeceğiniz üzere sürekli veri üreten sistemlerde bu hiç verimli bir yöntem olmayacaktır.

Küçük verilerde bir anlam ifade etmezken gb seviyesinde tablolarla çalıştığımızda o tabloları olduğu gibi ram’e yüklemek istemeyiz. Verilerin SQL içerisinden çekilmesinin bir diğer avantajı, verinin ihtiyacımız olmayan kısımlarını SQL sorgularıyla, çekmek istediğimiz kısımlarını alarak filtreleme işlemi yapabilmemizdir. Bu sayede ilgili değişkenleri ve gözlemleri(Satır & Sütün) çekerek boyuttan dolayısıyla ram’den avantaj sağlarız.

Bu kadar ön bilgi yeterli hadi şimdi işe girişelim.

Örnek üzerinde SQLite veritabınını kullanıyorum.

Sisteminizde sqlite3 kurulu olduğu varsayılmıştır.

Kütüphanelerimizi yükleyerek işe başlıyoruz.

Ben örnek olarak “SQLite” ile oluşturduğum bir veritabanını baz alıyorum. Bu sebeple benim kullandığım kütüphane sqlite3 lakin bu sizde farklı olabilir. Bu aşamada kullandığınız SQL’e göre tercih yapmalısınız.

Veritabanı bağlantısı

Yukarıda dile getirdiğim gibi ben sqlite3 üzerinde işlem yapıyorum. Burada oluşturduğunuz conn değişkeni veritabanı bağlantınızı ifade ediyor.

SQL sorgusu ile DataFrame oluşturma

pd.read_sql_query() metoduyla işlem yapıyoruz. Bu metot içerisine 2 zorunlu parametre alıyor bunlardan ilki SQL sorgumuz diğeri ise hangi veritabanında bu sorgunun çalıştırıldığı. İkinci parametremiz yukarıda oluşturduğumuz conn değişkeni olacak.

DataFrame’i oynattığınızda çıktı bu şekilde olmalı.

Eğer index değeri olarak herhangi bir sütunu almak istersek.

pd.read_sql_query() metodumuzun içerisine index_col="sütun_adi" parametresini eklememiz yeterli.

pd.read_sql_query("select * from arabalar;", conn, index_col="id")

DataFrame’i oynattığınızda çıktı bu şekilde olmalı.

Gerisi bildiğiniz DataFrame işlemleri. Tekrar hatırlatmakta hayda var yukarıda select * from arabalar; sorgusu yerine istediğiniz sorguyu çalıştırabilirsiniz.

Hatasız günler.

--

--