Nei nostri innumerevoli articoli su applicazioni di Data Science e Machine Learning ci siamo sempre concentrati sugli aspetti teorici delle analisi, ma non ci siamo mai addentrati nella questione tecnica del linguaggio da utilizzare. Talvolta è stato utilizzato R e altre volte Python; allo stesso si sarebbe potuto utilizzare qualsiasi altro linguaggio di programmazione come Matlab, Scala o SAS.

Se vi state chiedendo quale sia il linguaggio giusto da utilizzare per le vostre analisi, chiariamo subito che non daremo una risposta assoluta. Il nostro scopo è quello di fornire un’analisi comparata dei principali linguaggi e di lasciare a voi la scelta finale, sulla base dei vostri obiettivi e delle vostre necessità

I linguaggi su cui ci concentreremo nella nostra analisi sono SAS, Python e R. In particolare:

  • SAS: è uno strumento di analisi dei dati di spicco nel mercato, particolarmente utilizzato nelle grandi società.
  • R: è un linguaggio di scripting flessibile e potente per l’elaborazione statistica e grafica che offre un’ampia varietà di tecniche. E’ da molti considerato la controparte open source di SAS.
  • Python: è un linguaggio orientato agli oggetti, che enfatizza la produttività e la leggibilità del codice. E’ particolarmente utilizzato per lo sviluppo di applicazioni, in particolare in ambito Machine Learning.

python-vs-sas-vs-r

Linguaggi a confronto

L’analisi verrà condotta sulla base dei seguenti aspetti:

  • Costo
  • Facilità di apprendimento
  • Capacità di gestione dati
  • Capacità grafiche
  • Supporto tecnico
  • Funzionalità avanzate

Costo

Partiamo subito dall’aspetto più concreto.
SAS ha un costo notevole, a differenza di R e Python che sono gratuiti. SAS fornisce un abbonamento che comprende una licenza a tempo per utilizzare il software, più il supporto tecnico e la manutenzione. La licenza del pacchetto più semplice (SAS Analytics Pro) costa 8.700$ il primo anno, mentre l’eventuale rinnovo della licenza ammonta circa al 25-30% del costo del primo anno. Per eventuali funzionalità avanzate si deve pagare un ulteriore extra.
SAS fornisce anche una versione gratuita per le Università ma con alcune limitazioni.

R e Python invece possono essere scaricati e utilizzati sia da singoli individui che da aziende in maniera completamente gratuita.

Facilità di apprendimento

SAS è facile da apprendere e offre un’opzione semplice (PROC SQL) per le persone che già conoscono SQL. Anche in caso contrario, SAS dispone di una buona interfaccia GUI. In termini di risorse, SAS dispone di una documentazione abbastanza completa e si trovano diversi tutorial disponibili sui siti web di varie università.

Rispetto a SAS e Python, R ha una curva di apprendimento più ripida. Richiede l’apprendimento e la comprensione della codifica; inoltre, essendo un linguaggio di programmazione di basso livello, procedure semplici possono richiedere codici più lunghi.

Python è noto per la sua semplicità nel mondo della programmazione. Questo rimane vero anche per l’analisi dei dati. Nonostante al momento non ci siano interfacce GUI diffuse, l’utilizzo di notebook Python aumenta sempre più, data la loro capacità di fornire ottime soluzioni per la documentazione e la condivisione.

Capacità di gestione dati

Tutte e tre i linguaggi hanno buone capacità di gestione dei dati e offrono la possibilità di lavorare in parallelo, grazie all’integrazione con Hadoop, Spark, Cloudera e Apache Pig.

In particolare, per la manipolazione e la pulizia dei dati in R si segnalano i package Dplyr e Tidyr, mentre in Python lo standard è rappresentato dalla libreria Pandas.

Capacità grafiche

R e Python hanno capacità grafiche molto avanzate: Python ha le sue librerie come Matplotlib, Vispy e Seaborn che forniscono eccellenti risultati grafici, mentre R dispone di numerosi ed efficienti package quali ggplot, Lattice, RGIS e altri simili.

Sebbene SAS abbia lavorato di recente per migliorare le sue capacità grafiche, non si avvicina affatto al livello di R e Python; infatti qualsiasi personalizzazione dei grafici risulta difficile e richiede l’utilizzo del package SAS Graph, di difficile utilizzo e mancante di una documentazione adeguata.

Supporto tecnico

R e Python hanno delle grandi community online, ma non dispongono di nessun servizio di assistenza clienti; d’altra parte SAS ha un servizio clienti dedicato, insieme alla community, al quale rivolgersi per problemi tecnici.

Funzionalità avanzate

Grazie alla loro natura opensource, R e Python mettono a disposizione degli utenti nuove funzionalità in tempi molto rapidi, mentre SAS rilascia nuove funzionalità solamente con i successivi aggiornamenti della versione.

I fornitori di software commerciali come SAS pesano infatti i vantaggi dell’introduzione di una nuova tecnica contro i costi per svilupparla e supportarla; per questo motivo SAS tende a restare indietro rispetto a R e Python. SAS tende anche a raggruppare nuove e popolari funzionalità in nuovi prodotti piuttosto che migliorare il prodotto esistente, costringendo i clienti ad aggiungere più licenze software SAS allo suite base.

D’altra parte, SAS rilascia aggiornamenti in ambiente controllato, quindi sono ben testati, mentre con R e Python ci sono possibilità di errori negli ultimi sviluppi, data la natura open dei vari contributi.

Per quanto riguarda l’introduzione di tecniche di Deep Learning, Python ha avuto grandi progressi nel campo e ha numerosi pacchetti come Tensorflow e Keras. R ha recentemente aggiunto il supporto per questi pacchetti, insieme ad alcuni di base. I pacchetti kerasR e keras in R fungono da interfaccia con il pacchetto Python originale. SAS invece è ancora in una fase iniziale e c’è ancora molto da lavorare.

Conclusioni

A livello globale, SAS è ancora leader di mercato; infatti la maggior parte delle grandi organizzazioni utilizza ancora SAS per la disponibilità di supporto ufficiale e per non affrontare i costi dati dal passaggio ad altri linguaggi.
R e Python d’altra parte sono tendenzialmente le opzioni migliori per le start-up e le aziende in cerca di efficienza dei costi, tuttavia il numero di lavori in cui viene richiesto uno tra R e Python è stato segnalato in fortissimo aumento negli ultimi anni anche tra le grandi aziende. Tale inversione di tendenza trova conferma nel confronto dei job trend di indeed.com  dell 2017 e del 2019:

indeed1

Numero di job posting su indeed.com nel 2019, suddivisi per i software più diffusi.

indeed2

Percentuale di variazione di presenza tra il 2017 e il 2019 dei software nei job posting di indeed.com. Si considerano solo i software con più di 100 occorrenze nel 2017.

CC BY-NC-SA 4.0
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.