Cursus
Data Science is tegenwoordig een integraal onderdeel van elke sector. Van bankwezen tot verzekeringen en gezondheidszorg: elke seconde van de dag wordt er een enorme hoeveelheid data gegenereerd. Het is daarom essentieel dat we deze enorme hoeveelheid data kunnen benutten om bruikbare inzichten te genereren en daarop te acteren. Er zijn vandaag de dag veel tools beschikbaar in de vorm van programmeertalen. Van al die talen lijken Python en R de koplopers.
Zowel Python als R worden veel gebruikt in de datawereld. Beide talen hebben een breed scala aan tools die een uitstekende set functies bieden, uitermate geschikt voor data science. Waar Python een general-purpose taal is die voor uiteenlopende toepassingen wordt gebruikt, is R een programmeertaal en omgeving voor statistische computing en visualisaties.
Een overzicht van het Python- en R-ecosysteem
Laten we kijken naar de verschillende aspecten van deze talen en wat er goed en minder goed aan is.
Programmeertaal Python

Python is een geïnterpreteerde, high-level, general-purpose programmeertaal. Ze werd in 1991 gemaakt en uitgebracht door Guido van Rossum. Sinds de release is Python enorm populair geworden in uiteenlopende domeinen, waaronder data science. Python behoort vandaag tot de snelstgroeiende programmeertalen ter wereld.
Enkele redenen voor die enorme populariteit zijn:
- Objectgeoriënteerde taal
- General-purpose
- Geweldige communitysupport
- Eenvoudig te begrijpen en te leren
- Beschikt over efficiënte packages zoals pandas, numpy en scikit-learn, die het een uitstekende keuze maken voor machine learning-activiteiten.
Wanneer het echter aankomt op statistische computing, loopt Python achter en ontbreken gespecialiseerde packages, in tegenstelling tot tegenhanger R.
Programmeertaal R

R is in essentie software voor statistische computing en visualisaties, ondersteund door de R Foundation for Statistical Computing. R verscheen voor het eerst in augustus 1993, met de eerste stabiele release in 1995, en wordt sindsdien veel gebruikt door statistici en dataminer voor statistische analyses.
Enkele kenmerken die R doen opvallen tussen andere talen zijn:
- Bevat packages voor vrijwel elke statistische toepassing die je kunt bedenken. CRAN host momenteel meer dan 10k packages.
- Wordt geleverd met uitstekende visualisatielibraries zoals ggplot2.
- In staat tot standalone analyses met ingebouwde packages.
Maar er is ook een keerzijde. Qua performance is R niet de snelste taal en kan het soms veel geheugen verbruiken bij grote datasets.
Python & R samen gebruiken
R en Python zijn elk op zich uitstekende tools, maar worden vaak als rivalen gezien. In plaats van ze zo te benaderen, zouden we de sterke punten van beide talen moeten benutten, zodat we het beste van twee werelden krijgen.
In de Data Science-community werken veel mensen doorgaans met slechts één taal. Er zijn echter ook mensen die zowel Python als R gebruiken, maar hun percentage is klein. Aan de andere kant zijn er velen die zich aan één programmeertaal committeren maar graag toegang zouden hebben tot bepaalde mogelijkheden van de ander. Zo verlangen R-gebruikers soms naar de objectgeoriënteerde capaciteiten die native zijn in Python, en evenzo verlangen sommige Python-gebruikers naar het volledige scala aan statistische verdelingen dat in R beschikbaar is.
De onderstaande figuur toont de resultaten van een onderzoek uitgevoerd door Red Monk in het derde kwartaal van 2018. Deze resultaten zijn gebaseerd op de populariteit van talen op Stack Overflow en op Github, en laten duidelijk zien dat zowel R als Python hoog scoren voor Data Science-activiteiten. Er is dus geen enkele reden waarom we niet met beide in hetzelfde project zouden kunnen werken. Ons uiteindelijke doel moet zijn om betere analyses te doen en betere inzichten te verkrijgen; de keuze voor een programmeertaal mag daarbij geen belemmering zijn.

Hoe gebruik je zowel Python als R in één project?
Bij het inbedden van SQL in een R- of Python-script trekken we geen spier. Waarom dan niet de statistische kracht van R benutten naast de programmeercapaciteiten van Python op dezelfde manier? Ja, het kan, en er zijn libraries die deze overstap uitstekend afhandelen.
Er zijn grofweg twee benaderingen om Python en R zij aan zij in één project te gebruiken.
R binnen Python
Dit betekent R-functies aanroepen binnen een Python-script. Enkele libraries die hiervoor zijn gemaakt:
1. PypeR
PypeR biedt een eenvoudige manier om vanuit Python toegang te krijgen tot R via pipes. PypeR is ook opgenomen in de Python Package Index, wat installatie nog eenvoudiger maakt. PypeR is vooral nuttig wanneer er geen frequente interactieve gegevensoverdracht tussen Python en R nodig is. Door R via een pipe te draaien, krijgt het Python-programma flexibiliteit in subprocesbesturing, geheugengebruik en portabiliteit over populaire besturingssystemen, waaronder Windows, GNU/Linux en macOS.

Conventies voor het omzetten van Python-objecten naar R-objecten
2. pyRserve
pyRserve is een andere library die hiervoor is gemaakt. Het gebruikt Rserve als RPC-verbindingsgateway. Via zo’n verbinding kunnen variabelen vanuit Python in R worden gezet en kunnen R-functies op afstand worden aangeroepen. R-objecten worden weergegeven als instanties van in Python geïmplementeerde klassen, waarbij R-functies in een aantal gevallen gebonden methoden zijn aan die objecten.
3. rpy2
De rpy2-library wordt vaker gebruikt dan de vorige twee. De reden is dat rpy2 actief en voortvarend wordt ontwikkeld. Het draait embedded R in een Python-proces. Het creëert een framework dat Python-objecten kan vertalen naar R-objecten, ze doorgeven aan R-functies en R-output terug omzetten naar Python-objecten.

Een voordeel van R binnen Python gebruiken is dat je R’s geweldige packages zoals ggplot2, tidyr, dplyr en consorten eenvoudig in Python kunt inzetten. Als voorbeeld bekijken we hoe je ggplot2 gemakkelijk kunt gebruiken voor mapping in Python.
- Basisplot

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

- Geometrie

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

rpy2-bronnen
Voor een diepgaande review en gedetailleerde kennis over de installatie en werking van rpy2 kun je de volgende bronnen bekijken:
- Officiële documentatie van rpy2
- RPy2: Combining the Power of R + Python for Data Science
- Accessing R from Python using RPy2
Python binnen R
Het is ook mogelijk om Python-scripts in R te draaien met een van de onderstaande opties:
1. rJython
Deze package implementeert een interface naar Python via Jython. Het is bedoeld om andere packages in staat te stellen Python-code in te bedden naast R.
2. rPython
rPython is opnieuw een package waarmee R Python kan aanroepen. Het maakt het mogelijk om Python-code uit te voeren, functieaanroepen te doen, variabelen toe te wijzen en op te halen, enz. vanuit R.
3. SnakeCharmR
SnakeCharmR is een gemoderniseerde, grondig vernieuwde versie van rPython. Het is een fork van ‘rPython’ die ‘jsonlite’ gebruikt en veel verbeteringen heeft ten opzichte van rPython.
4. PythonInR
PythonInR maakt toegang tot Python vanuit R heel eenvoudig door functies te bieden om vanuit R met Python te interacteren.
5. reticulate
De reticulate-package biedt een uitgebreide set tools voor interoperabiliteit tussen Python en R. Van alle bovenstaande alternatieven is dit de meest gebruikte, mede omdat RStudio het actief ontwikkelt.
Reticulate embedt een Python-sessie binnen de R-sessie, wat naadloze, high-performance interoperabiliteit mogelijk maakt. De package stelt je in staat om Python-code te verweven met R en zo een nieuw type project te creëren dat de twee talen met elkaar versmelt.

De reticulate-package biedt de volgende mogelijkheden:
- Python aanroepen vanuit R op verschillende manieren, waaronder R Markdown, Python-scripts sourcen, Python-modules importeren en Python interactief gebruiken binnen een R-sessie.
- Vertaling tussen R- en Python-objecten (bijvoorbeeld tussen R- en pandas-dataframes, of tussen R-matrices en NumPy-arrays).
- Flexibele binding aan verschillende Python-versies, inclusief virtual environments en Conda-omgevingen.
Reticulate-bronnen
Enkele goede bronnen over het gebruik van de reticulate-package:
- De documentatie is behoorlijk robuust en bevat veel voorbeelden en use-cases om je op weg te helpen.
- https://longhowlam.wordpress.com/2017/04/10/test-driving-python-integration-in-r-using-the-reticulate-package/
- SNAKES IN A PACKAGE: COMBINING PYTHON AND R WITH RETICULATE
Conclusie
R en Python zijn allebei uitstekende tools en vrijwel toereikend om Data Science-taken van de grond af op te pakken. Je hebt ze mogelijk niet allebei in één project nodig. Kennis van beide kan echter handig zijn, zeker omdat je zo de optie hebt om in een andere omgeving te werken. Zoals men zegt: de focus moet liggen op de vaardigheden, niet op de tools. We zouden dus open moeten staan voor het leren van nieuwe tools en talen als die ons helpen het probleem voor ons eenvoudiger op te lossen.
Wil je met een van beide talen aan de slag, volg dan DataCamp’s cursussen Introduction to Python of Introduction to R. Bekijk ook onze Python-tutorial voor beginners.
Referenties:
- Interfacing R and Python — Andrew Collier
- From ‘R vs Python’ to ‘R and Python’
