Kurs
Veri bilimi günümüzde her sektörün ayrılmaz bir parçası haline geldi. Bankacılıktan sigortaya, sağlığa kadar günün her saniyesinde muazzam miktarda veri üretiliyor. Bu nedenle, bu devasa veri yığınından eyleme dönüştürülebilir içgörüler üretip bunlar üzerinde çalışabilmemiz kritik önem taşıyor. Piyasada programlama dilleri şeklinde birçok araç mevcut. Tüm bu diller arasında Python ve R yarışı önde götürüyor gibi görünüyor.
Hem Python hem de R veri bilimi dünyasında yaygın biçimde kullanılıyor. Her iki dil de veri bilimi senaryoları için son derece uygun, geniş araç ve işlev kümeleri sunuyor. Python çeşitli uygulamalarda kullanılan genel amaçlı bir dilken, R istatistiksel hesaplama ve grafikler için bir programlama dili ve ortamdır.
Python ve R Ekosistemine Genel Bakış
Bu dillerin çeşitli yönlerine ve onlar hakkında iyi ve o kadar da iyi olmayan yanlara bakalım.
Python Programlama Dili

Python, yorumlamalı, üst düzey, genel amaçlı bir programlama dilidir. 1991’de Guido Van Rossum tarafından oluşturulup yayımlandı. Çıkışından bu yana, veri bilimi de dahil olmak üzere çeşitli alanlarda son derece popüler oldu. Python bugün dünyadaki en hızlı büyüyen programlama dilleri arasında yer alıyor.
Bu kadar popüler olmasının bazı nedenleri şunlardır:
- Nesne yönelimli dil
- Genel amaçlı
- Olağanüstü topluluk desteğine sahip
- Basit, anlaşılması ve öğrenilmesi kolay
- Makine öğrenimi etkinlikleri için mükemmel bir tercih olmasını sağlayan pandas, numpy ve scikit-learn gibi verimli paketlere sahip.
Bununla birlikte istatistiksel hesaplama söz konusu olduğunda Python geride kalır ve muadili R’nin aksine uzmanlaşmış paketlere sahip değildir.
R Programlama Dili

R, esasen R Foundation for Statistical Computing tarafından desteklenen, istatistiksel hesaplama ve grafikler için bir yazılımdır. İlk kez Ağustos 1993’te ortaya çıktı, ilk kararlı sürümü 1995’te yayımlandı ve o zamandan beri istatistikçiler ve veri madencileri tarafından istatistiksel hesaplamada yaygın olarak kullanılıyor.
R’yi diğer diller arasında öne çıkaran bazı özellikler şunlardır:
- Aklınıza gelebilecek neredeyse her istatistiksel uygulama için paketler içerir. CRAN şu anda 10 binden fazla pakete ev sahipliği yapıyor.
- ggplot2 gibi mükemmel görselleştirme kütüphaneleriyle birlikte gelir.
- Dahili paketlerle bağımsız analizler yapabilir.
Ancak bir dezavantajı var. Performans açısından R en hızlı dil değildir ve büyük veri kümeleriyle çalışırken bazen belleği fazla tüketebilir.
Python ve R’yi Birlikte Kullanma
R ve Python, kendi başlarına mükemmel araçlardır ancak çoğu zaman rakip olarak görülürler. Onlara bu şekilde bakmak yerine, her iki dilin de güçlü yanlarından yararlanarak iki dünyanın en iyisini elde etmeye çalışmalıyız.
Veri bilimi topluluğunda bugün genellikle yalnızca tek bir dille çalışan kişiler var. Yine de hem Python hem de R kullananlar mevcut, ancak oranları düşük. Öte yandan, yalnızca tek bir programlama diline bağlı olup rakibinin bazı yeteneklerine erişmeyi dileyen pek çok kişi var. Örneğin, R kullanıcıları bazen Python’a özgü nesne yönelimli yetenekleri arzularken, bazı Python kullanıcıları da R’de bulunan tam kapsamlı istatistiksel dağılımları ister.
Aşağıdaki şekil, Red Monk tarafından 2018’in üçüncü çeyreğinde yapılan bir anketin sonuçlarını göstermektedir. Bu sonuçlar, dillerin Stack Overflow ve Github üzerindeki popülerliğine dayanmakta olup, veri bilimi faaliyetleri söz konusu olduğunda hem R’nin hem de Python’un oldukça yüksek puan aldığını açıkça göstermektedir. Dolayısıyla, aynı projede her ikisiyle de çalışamamamız için doğal bir neden yok. Nihai hedefimiz daha iyi analitik yapmak ve daha iyi içgörüler çıkarmak olmalıdır; programlama dili seçimi bunu başarmanın önünde engel teşkil etmemelidir.

Tek Bir Projede Hem Python’u Hem R’yi Nasıl Kullanırsınız?
SQL’i R ya da Python betiklerinin içine gömmek söz konusu olduğunda gözümüzü bile kırpmayız. O halde R’nin istatistiksel gücünü Python’un programlama kabiliyetleriyle aynı şekilde neden kullanmayalım? Evet, yapılabilir ve bu geçişleri gayet iyi yöneten kütüphaneler var.
Temelde tek bir projede Python ve R’yi yan yana kullanabileceğimiz iki yaklaşım bulunur.
Python İçinde R
Bu, bir Python betiği içinde R işlevlerini çağırmak anlamına gelir. Bu amaçla oluşturulan bazı kütüphaneler şunlardır:
1. PypeR
PypeR, borular (pipes) aracılığıyla Python’dan R’ye erişmenin basit bir yolunu sunar. PypeR, kurulum için daha pratik bir yöntem sağlayan Python’un Package Index’inde de yer alır. PypeR, Python ve R arasında sık etkileşimli veri aktarımına ihtiyaç olmadığında özellikle kullanışlıdır. R’yi bir pipe üzerinden çalıştırarak, Python programı alt süreç kontrollerinde, bellek kontrolünde ve Windows, GNU Linux ve Mac OS dahil yaygın işletim sistemi platformları arasında taşınabilirlikte esneklik kazanır.

Python nesnelerinin R nesnelerine dönüştürülmesine ilişkin kurallar
2. pyRserve
pyRserve bu amaçla oluşturulmuş başka bir kütüphanedir. Rserve’i bir RPC bağlantı geçidi olarak kullanır. Bu tür bir bağlantı aracılığıyla, değişkenler Python’dan R’ye ayarlanabilir ve ayrıca R işlevleri uzaktan çağrılabilir. Birçok durumda R nesneleri, Python’da uygulanmış sınıfların örnekleri olarak sunulur; R işlevleri de bu nesnelere bağlı metotlar olarak bağlanır.
3. rpy2
rpy2 kütüphanesi, önceki ikisine göre daha sık kullanılır. Nedeni, rpy2’nin etkin ve yoğun biçimde geliştiriliyor olmasıdır. Python süreci içinde gömülü R çalıştırır. Python nesnelerini R nesnelerine çevirebilen, bunları R işlevlerine aktarabilen ve R çıktısını tekrar Python nesnelerine dönüştürebilen bir çerçeve oluşturur.

Python içinde R kullanmanın bir avantajı, R’nin ggplot2, tidyr, dplyr vb. harika paketlerini Python’da kolayca kullanabilmemizdir. Örneğin, Python’da haritalama için ggplot2’yi nasıl kolayca kullanabileceğimize bakalım.
- Temel Grafik

https://rpy2.github.io/doc/latest/html/graphics.html#plot

- Geometri

https://rpy2.github.io/doc/latest/html/graphics.html#geometry

rpy2 Kaynakları
rpy2’nin kurulumu ve çalışma biçimi hakkında derinlemesine inceleme ve ayrıntılı bilgi için şu kaynaklara göz atabilirsiniz:
- rpy2’nin Resmi Dokümantasyonu
- RPy2: Veri Bilimi için R + Python’un Gücünü Birleştirme
- rpy2 kullanarak Python’dan R’ye erişim
R İçinde Python
Aşağıdaki alternatiflerden birini kullanarak R içinde Python betikleri çalıştırmak da mümkündür:
1. rJython
Bu paket, Jython üzerinden Python’a bir arayüz uygular. Diğer paketlerin, R ile birlikte Python kodu gömebilmesini amaçlar.
2. rPython
rPython yine R’nin Python’u çağırmasına olanak tanıyan bir pakettir. R’den Python kodu çalıştırmayı, işlev çağrıları yapmayı, değişkenler atayıp geri almayı vb. mümkün kılar.
3. SnakeCharmR
SnakeCharmR, rPython’un modernize edilmiş bir sürümüdür. ‘rPython’dan çatallanmıştır, ‘jsonlite’ kullanır ve rPython’a göre birçok iyileştirme içerir.
4. PythonInR
PythonInR, R içinden Python’a erişimi, R’den Python ile etkileşim kurmaya yarayan işlevler sağlayarak çok kolay hale getirir.
5. reticulate
reticulate paketi, Python ve R arasında birlikte çalışabilirlik için kapsamlı bir araç seti sunar. Yukarıdaki alternatiflerin tümü arasında en yaygın kullanılan budur; özellikle de Rstudio tarafından yoğun biçimde geliştirildiği için.
Reticulate, R oturumu içine bir Python oturumu gömerek kesintisiz ve yüksek performanslı birlikte çalışabilirlik sağlar. Paket, Python kodunu R’ye “reticulate” etmenize olanak tanır ve iki dili bir araya getiren yeni bir proje türü oluşturur.

reticulate paketi aşağıdaki olanakları sağlar:
- R Markdown, Python betiklerini kaynak gösterme, Python modüllerini içe aktarma ve bir R oturumu içinde Python’u etkileşimli olarak kullanma dahil olmak üzere çeşitli yollarla R’den Python’u çağırma.
- R ve Python nesneleri arasında dönüşüm (örneğin R ile Pandas veri çerçeveleri arasında veya R matrisleri ile NumPy dizileri arasında).
- Sanal ortamlar ve Conda ortamları dahil olmak üzere farklı Python sürümlerine esnek bağlanma.
Reticulate Kaynakları
reticulate paketini kullanmaya ilişkin bazı harika kaynaklar:
- Dokümantasyon oldukça kapsamlıdır ve başlamanıza yardımcı olacak çok sayıda örnek ve kullanım durumu içerir.
- https://longhowlam.wordpress.com/2017/04/10/test-driving-python-integration-in-r-using-the-reticulate-package/
- PAKETTE YILANLAR: RETICULATE İLE PYTHON VE R’Yİ BİRLEŞTİRME
Sonuç
Hem R hem de Python mükemmel araçlardır ve veri bilimi görevlerini baştan sona yürütmek için neredeyse yeterlidir. Tek bir projede her ikisini birden kullanmanız bile gerekmeyebilir. Ancak her ikisini de bilmek işe yarayabilir ve özellikle farklı bir ortamda çalışma seçeneği sunar. Denildiği gibi, odak noktamız araçlar değil beceriler olmalıdır. Bu nedenle, eldeki sorunu daha kolay çözmemize yardımcı oluyorlarsa yeni araç ve dilleri öğrenmeye açık olmalıyız.
Her iki dilden biriyle başlamak isterseniz, DataCamp’in Python’a Giriş veya R’ye Giriş kurslarını alın. Ayrıca Yeni Başlayanlar için Python Eğitimimize de göz atın.
Kaynakça:
- R ve Python Arayüzü — Andrew Collier
- ‘R vs Python’dan ‘R ve Python’a
