Kurs
Jupyter Notebooks, Netflix gibi birçok kuruluşun vazgeçilmez bulduğu, her Veri Bilimi iş akışının temel parçalarından biridir. Tarayıcı tabanlı hesaplama ortamı ve tekrarlanabilir doküman formatının birleşimi, onu dünya çapında milyonlarca veri bilimci ve araştırmacının fiili tercihi haline getirdi. Jupyter, yeryüzündeki neredeyse her ülkeden gelen harika bir uluslararası topluluğa sahiptir. Topluluğun kendisi çok sayıda çekirdek (kernel) geliştirmiştir.
Jupyter Lab, Project Jupyter için yeni nesil kullanıcı arayüzüdür ve klasik Jupyter Notebook’taki not defteri, terminal, metin düzenleyici, dosya tarayıcısı, zengin çıktılar vb. tüm tanıdık yapı taşlarını sunar. Ancak klasik not defterlerinden farklı olarak, tüm bu özellikler esnek ve güçlü bir kullanıcı arayüzünde sağlanır. Jupyter Lab’in temel fikri, klasik not defterinde yer alan tüm yapı taşlarını, artı bazı yeni şeyleri, tek bir çatı altında toplamaktır.

JupyterLab, birbirleriyle etkileşime girebilen not defterleri, metin dosyaları, terminaller ve not defteri çıktılarını içeren çalışma alanını gösteriyor.
Önce Jupyter Lab’i sistemlerimize kuralım ve çalıştıralım.
Kurulum
JupyterLab, conda, pip veya pipenv kullanılarak kurulabilir.
conda install -c conda-forge jupyterlab
or
pip install jupyterlab
or
pipenv install jupyterlab
pipenv shell
Daha fazla bilgi için resmi kurulum belgelerine göz atın.
JupyterLab’i Başlatma
Konsola aşağıdakini yazarak Jupyter’ı başlatabilirsiniz:
jupyter lab
JupyterLab tarayıcıda aşağıdakine benzeyen bir arayüzle otomatik olarak açılacaktır. Bu, her şeyin yerli yerinde olduğu ve başlayabileceğiniz anlamına gelir.

Ana çalışma alanı, asıl faaliyetin gerçekleştiği yerdir. Not defterleri, belgeler, konsollar, terminaller vb. unsurlardan oluşur. Çalışmaya başlamak için bir dosyayı bu alana çift tıklayın ya da sürükleyip bırakın.
JupyterLab için SQL Arayüzü

Çoğu zaman üzerinde çalıştığımız veriler veritabanı denilen dosyalarda saklanır ve bir Veri Bilimcisinin temel görevlerinden biri veritabanlarından veriye erişebilmek ve ardından onu analiz edebilmektir. Bu nedenle SQL veritabanları ile Jupyter Notebook/Lab arasında kesintisiz bir arayüze sahip olmak, veriye erişimi ve veriyi değiştirmeyi daha kolay ve verimli hale getirmek açısından harika bir fikirdir. Bu arayüz iki yolla sağlanabilir:
1. IPython SQL Magic uzantısını kullanma
Magic komutları, Jupyter Notebooks’ta standart veri analizindeki bazı yaygın sorunları çözmek için tasarlanmış kullanışlı işlevler kümesidir. %lsmagic komutuyla mevcut tüm magic’leri görebilirsiniz.
IPython SQL magic uzantısı, SQL sorgularını doğrudan kod hücrelerine yazmayı ve sonuçları doğrudan pandas DataFrame’lerine okumayı mümkün kılar (Kaynak). Bu, hem geleneksel not defterlerinde hem de modern Jupyter Lab’de çalışır.
Not defterine SQL modülünü kurma
!pip install ipython-sql
SQL modülünü yükleme
%load_ext sql
Yukarıdaki magic komutu ipython-sql uzantısını yükler. SQLAlchemy tarafından desteklenen herhangi bir veritabanına bağlanabiliriz. Burada bir SQLite veritabanına bağlanacağız. Kod hücresine aşağıdaki komutu girin:
%sql sqlite://
Çıktı olarak ‘Connected: @None' alırsanız, bağlantı kurulmuş demektir.
- Veritabanı oluşturma
Son olarak, işlevi göstermek için EMPLOYEES adlı bir demo tablo oluşturuyoruz.
%%sql
CREATE TABLE EMPLOYEE(firstname varchar(50),lastname varchar(50));
INSERT INTO EMPLOYEE VALUES('Tom','Mitchell');
INSERT INTO EMPLOYEE VALUES('Jack','Ryan');
Artık veritabanımız üzerinde sorgular çalıştırabiliriz.
%sql SELECT * from EMPLOYEE;
----------------------------------
* sqlite://
Done.
Yukarıdaki sorgu aşağıdaki tabloyu üretir.

- Mevcut bir veritabanıyla çalışma
Magic işlevini kullanarak mevcut bir veritabanına da bağlanabiliriz. Bu eğitimde, SQL_SAFI veritabanını (Studying African Farmer-led Irrigation (SAFI) veritabanı) kullanacağız. "SAFI Projesi, Tanzanya ve Mozambik’te çiftçilerin kullandığı tarım ve sulama yöntemlerini inceleyen bir araştırma projesidir. Bu veri kümesi, haneler ve tarımla ilgili anket verilerinden oluşur" (Kaynak). Şuradan indirebilirsiniz: burası.
#Specifying the path of the database
%sql sqlite:////Users/Parul/Desktop/SQL_SAFI.sqlite
-----------------------------------------------------------
'Connected: @/Users/Parul/Desktop/SQL_SAFI.sqlite'
Yukarıdaki ifade, Users/Parul/Desktop yolunda bulunan SQL_SAFI.sqlite adlı veritabanını açtı. Crops tablosunu seçip içeriğini görüntüleyelim.
%sql select * from Crops

Crops Tablosunun ilk birkaç satırını görüntüleme
%sql select * from Crops where D_curr_crop = "maize" AND ID <= 3;

Sonuç ayrıca aşağıdaki gibi bir pandas dataframe’ine dönüştürülebilir:
result = %sql select * from Crops where D_curr_crop = "maize" AND ID <= 3;
dataframe = result.DataFrame()

dataframe.info()

2. jupyterlab-sql uzantısı
Daha ileri gitmeden önce, genel olarak Jupyter uzantılarından biraz bahsedelim.
JupyterLab Uzantıları
Uzantılar, Jupyter Lab’in en faydalı özelliklerinden biridir ve Jupyter Lab deneyimini iyileştirebilir. Jupyter Lab, not defterleri, terminal ve düzenleyicinin tamamının birer uzantı olarak bulunduğu genişletilebilir bir ortamın kendisidir.
"JupyterLab uzantıları npm paketleridir (JavaScript geliştirmede standart paket formatı)"(Kaynak). Uzantılar; yeni temalar, görüntüleyiciler, klavye kısayolları, gelişmiş ayar seçenekleri gibi çeşitli yararlı seçenekler sunarak JupyterLab deneyimini özelleştirmenin ve geliştirmenin bir yolunu sağlar. GitHub’da topluluk tarafından geliştirilmiş birçok uzantı vardır. Uzantıları bulmak için GitHub’daki jupyterlab-extension konusunu arayabilirsiniz.
JupyterLab uzantılarını kurmak için Node.js yüklü olmalıdır; bu, ya web sitelerinden ya da aşağıdaki gibi kurulabilir.
conda install -c conda-forge nodejs
or
brew install node #for MacOS users
jupyterlab-sql uzantısı, Jupyter Lab’e bir SQL kullanıcı arayüzü eklemenizi sağlayan bu tür yararlı uzantılardan biridir. Bunun iki temel avantajı vardır:
- SQL tabloları basitçe tıklayıp seçerek keşfedilebilir.
- Tablolar özel sorgularla da değiştirilebilir ve okunabilir.
Daha fazlasını resmi Github deposunda okuyabilirsiniz.
Kurulum
jupyterlab-sql kurmak için aşağıdaki komutları verilen sırayla çalıştırın:
pip install jupyterlab_sql
jupyter serverextension enable jupyterlab_sql --py --sys-prefix
jupyter lab build
Ardından çalışmakta olan tüm Jupyter sunucularını yeniden başlatmanız gerekir.
Ayrıca, jupyterlab-sql’in yalnızca Python 3.5 ve üzeriyle çalıştığını not etmek önemlidir.
Başlarken
Jupyter Lab’i yeniden başlattıktan sonra başlatıcıda yeni bir SQL simgesi görünür

Bu, her şeyin doğru şekilde yüklendiği ve örneğinizi bir veritabanına bağlamaya hazır olduğunuz anlamına gelir.
Bağlantı
Veritabanına bağlanmak için geçerli bir veritabanı URL’sine ihtiyacınız vardır. jupyterlab-sql, SQLite, PostgreSQL ve MySQL veritabanlarına karşı kapsamlı şekilde test edilmiştir (Kaynak). URL’ler için SQLAlchemy rehberini izleyin. URL bir veritabanı URL’si olmalıdır; örneğin:
postgres://localhost:5432/postgres
postgres://username:password@localhost:5432/postgres
mysql://localhost/employees
sqlite://
sqlite:///myfile.db
Daha önce kullandığımız mevcut SQL_SAFI veritabanına bağlanalım. Başlatıcıdaki SQL simgesine tıklayın ve veritabanı URL’sini yazın. Bağlanmak için enter tuşuna basın.

Veritabanı bağlanır bağlanmaz, veritabanınızdaki tüm tabloları görüntüleyebilirsiniz.


Ardından, tablolardan istediğiniz verileri almak için özel SQL sorguları da yazabiliriz.
Sonuç
SQL ve JupyterLab’i birlikte kullanmak veri analizini bir üst seviyeye taşır. jupyter-sql arayüzü, SQL Server’ı Jupyter ekosistemine bağlamayı ve veriyi doğrudan içine çekmeyi, Jupyter arayüzünden ayrılmadan, çok kolay hale getirir.
SQL hakkında daha fazla bilgi edinmek isterseniz DataCamp’in SQL ile Veriye Dayalı Karar Verme kursunu alın.
SQL’de Uzak Python ve R eğitimimize göz atın.
