Corso
La guerra linguistica "R vs. Python" ha una lunga storia. In quanto linguaggi di programmazione di fatto per la data science, attirano sostenitori diversi da molti ambiti. Di conseguenza, chi li usa spesso non sfrutta appieno ciò che entrambi offrono e si limita a padroneggiare un solo strumento. Tuttavia, imparare a usare sia R sia Python come data scientist bilingue può aiutarti a risolvere meglio qualsiasi problema tu possa incontrare nella tua carriera.
Man mano che Python cresce in popolarità, sempre più utenti R passano a Python. Quindi, se usi R, considera questo articolo come una panoramica delle librerie Python che puoi integrare nel tuo flusso di lavoro quotidiano. Alcune hanno una sintassi simile a R per un passaggio più fluido, mentre altre offrono più funzionalità e velocità.
I migliori pacchetti Python per utenti R
Librerie per la manipolazione dei dati
R ha un ricco ecosistema di librerie per la manipolazione dei dati. Che si tratti di dplyr, tidyr o data.table, gli utenti R hanno a disposizione una vasta gamma di strumenti. Tuttavia, potrebbero prendere in considerazione alcune alternative Python per maggiore flessibilità, velocità e funzionalità.
Pandas
Tra i pacchetti Python per la manipolazione dei dati, il principale è la libreria pandas. È il pacchetto di riferimento per la manipolazione dei dati nello stack di data science Python ed è usato da milioni di persone in tutto il mondo. Attualmente conta oltre 20 milioni di download settimanali, rendendolo uno dei pacchetti Python più popolari.

Statistiche di download di pandas dal sito PyPI Stats.
Offre una suite così ampia di funzioni e classi per lavorare con i dati che, anche dopo anni di esperienza, puoi continuare a scoprire nuove tecniche con pandas. pandas è anche una libreria chiave nell’ecosistema, poiché molte altre librerie Python menzionate in questo articolo sono scritte in modo che la loro funzionalità si allinei con le classi di pandas.
Anche se è una libreria molto estesa, è semplice da imparare e padroneggiare. Conoscere poche classi e funzioni ti permette di eseguire analisi complesse su qualsiasi dataset.
Il pacchetto datatable di Python
Se la sintassi di pandas risulta troppo poco familiare agli utenti R, potrebbero sentirsi a casa usando il pacchetto datatable di Python. È ispirato all’omonimo pacchetto di R ed è scritto appositamente per gestire i dataset massivi di oggi: può leggere e manipolare file di dimensioni dell’ordine dei gigabyte in pochi secondi.
Un caso d’uso comune è leggere un grande dataset con datatable e convertirlo nel formato DataFrame di pandas, operazione molto più veloce che leggerlo direttamente con pandas. Ma, come utente R, non sei nemmeno obbligato a farlo perché datatable ha una sintassi quasi identica al pacchetto data.table di R.
RapidsAI & cuDF
Gli utenti R che vogliono passare a Python possono anche beneficiare di prestazioni migliori grazie all’ampio supporto GPU per le librerie Python. RapidsAI offre proprio questa opportunità tramite la libreria cuDF. cuDF è una libreria per dataframe che ti consente di manipolare dataset con miliardi di righe sfruttando la potenza di calcolo delle GPU NVIDIA. Un altro vantaggio di cuDF è la sintassi simile a quella di pandas.
Librerie per la visualizzazione dei dati
ggplot2 in R stabilisce lo standard per i pacchetti di visualizzazione dei dati ed è tra le librerie più usate nella data science. Tuttavia — per chi usa R e vuole passare a Python per la visualizzazione — esistono molte alternative valide.
Matplotlib
Matplotlib è una delle prime librerie con cui ci si imbatte quando si inizia a imparare la data science in Python. È una delle rare librerie che bilanciano perfettamente complessità e flessibilità. In altre parole, è facile per i principianti imparare a creare ottimi grafici e al tempo stesso offre agli utenti esperti tutti gli strumenti per creare plot personalizzati davvero sorprendenti.

Statistiche di download di Matplotlib dal sito PyPI Stats.
Seaborn
Lo svantaggio di Matplotlib è che i grafici richiedono un’ampia personalizzazione. Per grafici facili da stilizzare, però, puoi provare Seaborn. È un’API di wrapper attorno a Matplotlib, che rende molto più semplice per i principianti creare grafici altamente estetici. Seaborn introduce anche nuovi tipi di grafici e strumenti di subplotting non facilmente disponibili in Matplotlib.
Plotly & Dash
Con Python puoi anche creare visualizzazioni interattive usando diverse librerie dedicate. La più nota è Plotly, che ha radici profonde anche in R. È eccellente per produrre grafici interattivi di alta qualità e offre interfacce per personalizzare e creare plot complessi.
Inoltre, il framework Dash di Python è costruito sopra Plotly e ti permette di creare facilmente bellissime web app per ospitare dashboard. Un’altra libreria Python che consente di creare facilmente grafici interattivi è Bokeh, che permette anche di distribuire le visualizzazioni come web app con facilità.
Plotnine
Per chi cerca un’alternativa naturale a ggplot2 in Python, il pacchetto plotnine offre un’implementazione della grammar of graphics in Python. Ha una sintassi e un’estetica estremamente simili al pacchetto ggplot2 e offre un’esperienza senza soluzione di continuità per gli utenti R che vogliono iniziare subito a visualizzare i dati in Python.
Librerie matematiche e statistiche
Il Python nativo non include di default un’ampia gamma di funzioni statistiche come R. Tuttavia, le sue librerie compensano ampiamente questa mancanza.
NumPy
La prima è la potente NumPy, sulle cui spalle poggiano molte altre librerie Python essenziali. È una superba libreria per la manipolazione di array con un ricco set di funzioni matematiche vettorializzate. La sua velocità nella manipolazione di matrici è forse rivaleggiata solo da Julia, uno dei linguaggi più veloci nella storia della programmazione.
Gli array n-dimensionali di NumPy sono la spina dorsale di altre importanti librerie computazionali come TensorFlow o PyTorch. Per questo motivo, le statistiche di download di NumPy sono molto più alte della somma di quelle di pandas e Matplotlib.

Statistiche di download di Numpy dal sito PyPI Stats.
SciPy
Se non trovi una funzione in NumPy, SciPy è la risposta. Ha sottomoduli separati per varie applicazioni computazionali in matematica, fisica e statistica.
Il modulo delle funzioni speciali contiene funzioni di fisica matematica essenziali e ottimizzate per la velocità, utili ai ricercatori. Puoi risolvere problemi di ottimizzazione usando il modulo optimization, mentre i moduli integrate e fft si occupano di calcolo e trasformate di Fourier. Il suo modulo linalg contiene tutto ciò che è presente nel modulo linalg di NumPy più funzioni di algebra lineare più avanzate e di nicchia. Questo modulo ha un ottimo supporto da BLAS/LAPACK (librerie software standard di base per l’algebra lineare), che lo rende ancora più veloce di NumPy.
Ti permette anche di elaborare immagini multidimensionali in modo efficiente. Sebbene NumPy sia ottimo per immagini 2D/3D, non gestisce facilmente immagini di ordine superiore in campi come medicina e biologia. Qui entra in gioco il modulo ndimage di SciPy.
Statsmodels
Se i pacchetti sopra ruotano più attorno alla matematica che alla statistica, Python offre anche la libreria statsmodels. È una libreria vasta con funzioni e classi che ti permettono di stimare molti modelli statistici, condurre test d’ipotesi ed esplorare i dati.
Ci sono funzioni complete per l’analisi di regressione e API mature per i modelli lineari generalizzati. Il suo modulo di analisi delle serie temporali è particolarmente utile, poiché contiene funzioni specializzate per eseguire e visualizzare time series.
Altri moduli possono essere usati per l’analisi di sopravvivenza e di durata, metodi non parametrici e statistica multivariata. E, con grande soddisfazione degli utenti R, la maggior parte di questi moduli usa una sintassi in stile R sia nello scrivere le funzioni che nella stampa dell’output. Per l’analisi statistica pura, statsmodels è la combinazione perfetta di NumPy, SciPy e Matplotlib.
Librerie di machine learning
Questo è l’ambito in cui gli utenti R potrebbero trovare maggiore valore nell’adottare Python. Le librerie di machine learning di Python sono molto più olistiche di quelle di R e offrono molti algoritmi e strumenti per il pre-processing dei dati, il feature engineering, l’ottimizzazione degli iperparametri, il modeling e altro ancora.
Scikit-learn
Il primo framework è scikit-learn. È il framework di machine learning più popolare in Python ed è usato oggi dalla maggior parte dei practitioner di ML.

Dal State of Data Science and Machine Learning Survey 2021 di Kaggle
Scikit-learn ha un’ampia selezione di algoritmi di apprendimento supervisionato per regressione e classificazione binaria e multi-classe. Ha sottomoduli dedicati al preprocessing dei dati, pipeline, riduzione della dimensionalità, feature engineering, selezione delle feature, imputazione dei dati mancanti e clustering.
Nonostante l’elevato numero di classi e funzionalità, ha un’API estremamente intuitiva e lineare. Scikit-learn fa un lavoro notevole nell’implementare tutti i 20 design pattern del codice Python presenti nello Zen of Python.
XGBoost
Se scikit-learn ha uno svantaggio, è la mancanza di supporto GPU. Tutti i suoi algoritmi girano su CPU, quindi è naturale rivolgersi ad altri framework quando serve più velocità di calcolo con librerie abilitate alla GPU. Una di queste librerie, già nota agli utenti R, è XGBoost.
Con Gradient Boosted Trees all’avanguardia e accelerati da GPU al suo core, può risolvere compiti di apprendimento supervisionato molto più velocemente di altri framework di machine learning mantenendo alti livelli di performance. L’immagine sopra mostra che è piuttosto popolare nella comunità Python e domina le competizioni su dati tabellari su Kaggle.
LightGBM & Catboost
Due librerie simili sono LightGBM e CatBoost. Mentre LightGBM richiede significativamente meno risorse di memoria rispetto a XGBoost, CatBoost offre vantaggi in velocità e accuratezza. Tutte e tre le librerie di gradient boosting possono implementare l’API di Scikit-learn, rendendole molto facili da usare.
Oltre le guerre tra linguaggi: R e Python per il data scientist moderno
Pur avendo vantaggi diversi, inquadrare R e Python come una "guerra tra linguaggi" è controproducente per i data scientist. Nella loro recente partecipazione al podcast DataFramed, gli autori di "Python and R for the Modern Data Scientist" Rick Scavetta e Boyan Angelov parlano dei vantaggi dell’essere un data scientist bilingue e di come i team di data science moderni trarrebbero beneficio da professionisti bilingui.
Nel corso del podcast, discutono di come un grosso limite dell’inquadramento in termini di guerre tra linguaggi sia l’ascesa di un pensiero da monocultura all’interno delle comunità R e Python. Una delle migliori contro-argomentazioni alla monocultura o alla mentalità "noi contro loro" è l’analogia del "martello e chiodo" — se tutto ciò che hai è un martello, ogni cosa ti sembrerà un chiodo.
In altre parole, l’approccio language-first limita la creatività e la capacità di risolvere i problemi in modo efficace. Adottando un approccio solution-first, inizi a guardare alla soluzione del tuo problema in termini di concetti, invece di restare vincolato a ciò che offre rigidamente un singolo linguaggio.
Conoscere sia R sia Python ti consente di usare il meglio di entrambi i mondi nei contesti in cui uno è superiore all’altro. Per esempio, gli autori evidenziano come R eccella nella visualizzazione dei dati con ggplot2 e quanto sia maturo il suo ecosistema di reportistica grazie a R Markdown e Shiny, mentre sottolineano come Python eccella in machine learning, API e MLOps.
Nel libro gli autori presentano un brillante case study che mostra come far comunicare i due linguaggi tra loro. Usando strumenti come reticulate in RStudio, puoi chiamare script Python ed eseguire pacchetti Python all’interno di R, consentendoti di passare liberamente oggetti tra i linguaggi.
Diventare un data scientist bilingue non è mai stato così semplice se usi R. Per saperne di più sull’apprendimento di Python, dai un’occhiata alla nostra ampia raccolta di risorse.

