Corso
La Data Science è ormai parte integrante di ogni settore. Dalla banca alle assicurazioni alla sanità, ogni secondo viene generata una quantità enorme di dati. Per questo è diventato imprescindibile saper sfruttare questa mole di informazioni per ricavarne insight azionabili e metterli in pratica. Oggi sul mercato sono disponibili molti strumenti sotto forma di linguaggi di programmazione. Tra tutti, Python e R sembrano essere in testa alla corsa.
Sia Python che R sono ampiamente usati nel mondo della data science. Entrambi i linguaggi offrono una vasta gamma di strumenti con un eccellente ventaglio di funzioni, estremamente adatte agli scenari di data science. Python è un linguaggio generalista usato per molteplici applicazioni, mentre R è un linguaggio e un ambiente per il calcolo statistico e la grafica.
Panoramica dell’ecosistema di Python e R
Vediamo i vari aspetti di questi linguaggi e cosa hanno di buono e di meno buono.
Linguaggio di programmazione Python

Python è un linguaggio di programmazione interpretato, di alto livello e general-purpose. È stato creato e rilasciato nel 1991 da Guido Van Rossum. Dalla sua uscita, Python è diventato estremamente popolare in vari campi, inclusa la data science. Oggi Python è tra i linguaggi di programmazione in più rapida crescita al mondo.
Alcuni motivi della sua grande popolarità sono:
- Linguaggio orientato agli oggetti
- General purpose
- Ha un incredibile supporto della community
- Semplice e facile da capire e imparare
- Dispone di pacchetti efficienti come pandas, numpy e scikit-learn che lo rendono un’ottima scelta per le attività di machine learning.
Tuttavia, quando si tratta di calcolo statistico, Python rimane indietro e non ha pacchetti specializzati, a differenza del suo omologo R.
Linguaggio di programmazione R

R è essenzialmente un software per il calcolo statistico e la grafica, supportato dalla R Foundation for Statistical Computing. È apparso per la prima volta nell’agosto del 1993, con la prima release stabile nel 1995, e da allora è stato ampiamente usato da statistici e data miner per il calcolo statistico.
Alcune caratteristiche che fanno spiccare R tra gli altri linguaggi sono:
- Include pacchetti per quasi qualsiasi applicazione statistica si possa immaginare. CRAN attualmente ospita più di 10.000 pacchetti.
- È dotato di eccellenti librerie di visualizzazione come ggplot2.
- È in grado di eseguire analisi standalone con i pacchetti integrati.
Ma c’è anche un rovescio della medaglia. In termini di performance, R non è il linguaggio più veloce e può diventare a volte molto esigente in memoria quando si lavora con dataset di grandi dimensioni.
Usare Python e R insieme
R e Python sono strumenti eccellenti a pieno titolo, ma spesso vengono percepiti come rivali. Invece di vederli così, dovremmo provare a sfruttare i punti di forza di entrambi i linguaggi per avere il meglio di due mondi.
La community della Data Science oggi include persone che in genere lavorano con un solo linguaggio. Ci sono però anche coloro che usano sia Python che R, ma sono una percentuale ridotta. D’altro canto, molte persone sono legate a un solo linguaggio ma vorrebbero avere accesso ad alcune capacità del “rivale”. Per esempio, gli utenti R a volte desiderano le capacità orientate agli oggetti native di Python e, allo stesso modo, alcuni utenti Python vorrebbero l’intera gamma di distribuzioni statistiche disponibili in R.
La figura qui sotto mostra i risultati di un sondaggio condotto da Red Monk nel terzo trimestre del 2018. Questi risultati si basano sulla popolarità dei linguaggi su Stack Overflow e su Github e mostrano chiaramente che sia R che Python sono valutati molto bene per le attività di Data Science. Non c’è quindi alcun motivo intrinseco per cui non si possano usare entrambi nello stesso progetto. Il nostro obiettivo finale dovrebbe essere fare analisi migliori e ricavare insight migliori, e la scelta del linguaggio di programmazione non dovrebbe essere un ostacolo per raggiungerlo.

Come usare sia Python che R in un unico progetto?
Quando si tratta di incorporare SQL all’interno di uno script R o Python, non battiamo ciglio. Perché non sfruttare allora la potenza statistica di R insieme alle capacità di programmazione di Python allo stesso modo? Sì, si può fare, e ci sono librerie che gestiscono molto bene queste transizioni.
Fondamentalmente ci sono due approcci con cui possiamo usare Python e R fianco a fianco in un unico progetto.
R dentro Python
Significa chiamare funzioni R all’interno di uno script Python. Alcune librerie create per questo scopo sono:
1. PypeR
PypeR fornisce un modo semplice per accedere a R da Python tramite pipe. PypeR è incluso anche nel Python Package Index, che offre un’installazione più comoda. PypeR è particolarmente utile quando non servono trasferimenti di dati interattivi frequenti tra Python e R. Eseguendo R tramite pipe, il programma Python guadagna flessibilità nel controllo dei sotto-processi, nel controllo della memoria e nella portabilità tra i sistemi operativi più diffusi, tra cui Windows, GNU Linux e macOS.

Convenzioni per la conversione degli oggetti Python in oggetti R
2. pyRserve
pyRserve è un’altra libreria creata per questo scopo. Usa Rserve come gateway di connessione RPC. Tramite tale connessione, è possibile impostare variabili in R da Python e chiamare funzioni R in remoto. Gli oggetti R sono esposti come istanze di classi implementate in Python, con funzioni R come metodi associati a quegli oggetti in diversi casi.
3. rpy2
La libreria rpy2 è usata più spesso delle due precedenti. Il motivo è che rpy2 è sviluppata attivamente e in modo deciso. Esegue R incorporato in un processo Python. Crea un framework che può tradurre oggetti Python in oggetti R, passarli a funzioni R e convertire l’output di R in oggetti Python.

Un vantaggio dell’uso di R dentro Python è poter utilizzare facilmente in Python gli straordinari pacchetti di R come ggplot2, tidyr, dplyr e altri. Per esempio, vediamo come possiamo usare facilmente ggplot2 per la mappatura in Python.
- Grafico di base

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

- Geometria

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

Risorse su rpy2
Per una recensione approfondita e una conoscenza dettagliata dell’installazione e del funzionamento di rpy2, dai un’occhiata alle seguenti risorse:
- Documentazione ufficiale di rpy2
- RPy2: unire la potenza di R + Python per la Data Science
- Accedere a R da Python usando RPy2
Python dentro R
È anche possibile eseguire script Python in R usando una delle alternative seguenti:
1. rJython
Questo pacchetto implementa un’interfaccia a Python tramite Jython. È pensato per consentire ad altri pacchetti di incorporare codice Python insieme a R.
2. rPython
rPython è di nuovo un pacchetto che consente a R di chiamare Python. Rende possibile eseguire codice Python, effettuare chiamate a funzioni, assegnare e recuperare variabili, ecc. da R.
3. SnakeCharmR
SnakeCharmR è una versione moderna e rivista di rPython. È un fork di “rPython” che usa “jsonlite” e presenta molti miglioramenti rispetto a rPython.
4. PythonInR
PythonInR rende molto semplice l’accesso a Python dall’interno di R fornendo funzioni per interagire con Python da R.
5. reticulate
Il pacchetto reticulate fornisce un set completo di strumenti per l’interoperabilità tra Python e R. Tra tutte le alternative sopra, questa è la più utilizzata, anche perché è sviluppata in modo molto attivo da RStudio.
Reticulate incorpora una sessione Python all’interno della sessione R, abilitando un’interoperabilità fluida e ad alte prestazioni. Il pacchetto ti consente di reticolare codice Python in R, creando una nuova tipologia di progetto che intreccia i due linguaggi.

Il pacchetto reticulate offre le seguenti funzionalità:
- Chiamare Python da R in vari modi, tra cui R Markdown, esecuzione di script Python, importazione di moduli Python e uso interattivo di Python all’interno di una sessione R.
- Traduzione tra oggetti R e Python (ad esempio, tra data frame di R e data frame di Pandas, o tra matrici di R e array di NumPy).
- Collegamento flessibile a diverse versioni di Python, inclusi ambienti virtuali e ambienti Conda.
Risorse su Reticulate
Alcune ottime risorse sull’uso del pacchetto reticulate sono:
- La documentazione è molto solida e ricca di esempi e casi d’uso per iniziare.
- 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
Conclusione
Sia R che Python sono strumenti eccellenti e quasi sufficienti per svolgere i compiti di Data Science da zero. Potrebbe non essere nemmeno necessario usarli entrambi nello stesso progetto. Tuttavia, conoscere entrambi può tornare utile, soprattutto perché ci offre l’opzione di lavorare in un ambiente diverso. Come si dice, il focus dovrebbe essere sulle competenze, non sugli strumenti. Dovremmo quindi essere aperti a imparare nuovi strumenti e linguaggi se ci aiutano a risolvere il problema in questione con facilità.
Se vuoi iniziare con uno dei due linguaggi, prova i corsi di DataCamp Introduzione a Python o Introduzione a R. Dai un’occhiata anche al nostro Tutorial di Python per principianti.
Riferimenti:
- Interfacing R and Python — Andrew Collier
- Da “R vs Python” a “R e Python”

