Cos'è Jupyter Notebook? Analisi dei dati semplificata

Ad un certo punto, dobbiamo tutti mostrare il nostro lavoro. La maggior parte del lavoro di programmazione è condivisa come codice sorgente grezzo o come eseguibile compilato. Il codice sorgente fornisce informazioni complete, ma in un modo che è più "chiaro" che "mostra". L'eseguibile ci mostra cosa fa il software, ma anche quando viene fornito con il codice sorgente può essere difficile capire esattamente come funziona.

Immagina di poter visualizzare il codice ed eseguirlo nella stessa interfaccia utente, in modo da poter apportare modifiche al codice e visualizzare i risultati di tali modifiche istantaneamente, in tempo reale? Questo è proprio ciò che offre Jupyter Notebook. 

Jupyter Notebook è stato creato per rendere più facile mostrare il proprio lavoro di programmazione e per consentire ad altri di partecipare. Jupyter Notebook consente di combinare codice, commenti, contenuti multimediali e visualizzazioni in un documento interattivo, chiamato naturalmente taccuino, che può essere condiviso , riutilizzati e rielaborati. 

E poiché Jupyter Notebook viene eseguito tramite un browser Web, il notebook stesso potrebbe essere ospitato sul computer locale o su un server remoto. 

Vantaggi di Jupyter Notebook

Sviluppato originariamente per applicazioni di data science scritte in Python, R e Julia, Jupyter Notebook è utile in tutti i modi per tutti i tipi di progetti:

  • Visualizzazioni dei dati.  La maggior parte delle persone ha la prima esposizione a Jupyter Notebook tramite una visualizzazione dei dati, un taccuino condiviso che include un rendering di alcuni set di dati come grafico. Jupyter Notebook consente di autorizzare le visualizzazioni, ma anche di condividerle e consentire modifiche interattive al codice e al set di dati condivisi.
  • Condivisione codice.  I servizi cloud come GitHub e Pastebin forniscono modi per condividere il codice, ma sono in gran parte non interattivi. Con un Jupyter Notebook, puoi visualizzare il codice, eseguirlo e visualizzare i risultati direttamente nel tuo browser web.
  • Interazioni in tempo reale con il codice.  Il codice di Jupyter Notebook non è statico; può essere modificato e rieseguito in modo incrementale in tempo reale, con feedback fornito direttamente nel browser. I notebook possono anche incorporare controlli utente (ad es. Cursori o campi di immissione di testo) che possono essere utilizzati come sorgenti di input per il codice.
  • Documentazione di esempi di codice. Se hai un pezzo di codice e vuoi spiegare riga per riga come funziona, con feedback dal vivo lungo tutto il percorso, puoi incorporarlo in un notebook Jupyter. Soprattutto, il codice rimarrà completamente funzionante: puoi aggiungere interattività insieme alla spiegazione, mostrare e dire allo stesso tempo.

Componenti di Jupyter Notebook

I taccuini Jupyter possono includere diversi tipi di ingredienti, ciascuno organizzato in blocchi separati:

  • Testo e HTML.  Il testo normale o il testo annotato nella sintassi Markdown per generare HTML, può essere inserito nel documento in qualsiasi momento. Lo stile CSS può anche essere incluso in linea o aggiunto al modello utilizzato per generare il taccuino.
  • Codice e output. Il codice nei notebook Jupyter Notebook è in genere codice Python, sebbene sia possibile aggiungere il supporto nell'ambiente Jupyter per altri linguaggi come R o Julia. I risultati del codice eseguito vengono visualizzati immediatamente dopo i blocchi di codice ei blocchi di codice possono essere eseguiti e rieseguiti nell'ordine desiderato, tutte le volte che lo desideri. 
  • Visualizzazioni. Grafici e grafici possono essere generati dal codice, tramite moduli come Matplotlib, Plotly o Bokeh. Come l'output, queste visualizzazioni vengono visualizzate in linea accanto al codice che le genera. Tuttavia, il codice può anche essere configurato per scriverli su file esterni, se necessario.
  • Multimedia. Poiché Jupyter Notebook è basato sulla tecnologia web, può visualizzare tutti i tipi di contenuti multimediali supportati in una pagina web. Puoi includerli in un taccuino come elementi HTML, oppure puoi generarli a livello di codice tramite il IPython.displaymodulo.
  • Dati. I dati possono essere forniti in un file separato insieme al .ipynb file che costituisce un notebook Jupyter Notebook, oppure possono essere importati in modo programmatico, ad esempio includendo il codice nel notebook per scaricare i dati da un repository Internet pubblico o per accedervi tramite un database connessione.

Casi d'uso di Jupyter Notebook

I casi d'uso più comuni per Jupyter Notebook sono la scienza dei dati, la matematica e altri progetti di ricerca che coinvolgono visualizzazioni di dati o formule. Oltre a questi, però, ci sono molti altri casi d'uso:

  • Condivisione di una visualizzazione, con o senza interattività.  Le persone spesso condividono i risultati di una visualizzazione dei dati come un'immagine statica, ma questo è utile solo fino a un certo punto. Condividendo un taccuino Jupyter, consenti al tuo pubblico di destinazione di immergersi e giocare. Possono acquisire una conoscenza approfondita dei dati, in modo interattivo.
  • Documentare un processo con il codice. Molti programmatori che scrivono sul blog le loro esperienze di programmazione scrivono i loro post su un taccuino Jupyter. Altri possono scaricare il proprio taccuino e ricreare l'esercizio.
  • Documentazione live per una libreria o un modulo. La maggior parte della documentazione per i moduli Python è statica; un notebook Jupyter può essere utilizzato come sandbox interattivo per apprendere come funziona un modulo. Qualsiasi modulo Python che funziona bene in un'interfaccia notebook (essenzialmente, tutto ciò che scrive stdoutcome parte del suo comportamento) è un buon candidato per questo.
  • Condivisione di codice e dati in generale.  Tutto quello che devi fare per condividere un notebook Jupyter e i file di dati associati è impacchettarlo in un archivio.

JupyterLab

Un'interfaccia utente di nuova generazione per Jupyter Notebook, chiamata JupyterLab, è ora disponibile e considerata pronta per l'uso in produzione.

Come spiegato nel post del blog che annuncia la disponibilità generale, JupyterLab è più malleabile di un notebook Jupyter convenzionale, consentendo agli utenti di trascinare le celle all'interno e tra i notebook e di organizzare lo spazio di lavoro in schede e sottosezioni separate. Il codice può essere eseguito direttamente da file di testo e file Jupyter Notebook e molti formati di file comuni sia per codice che per dati possono essere visualizzati con anteprime live.

JupyterLab può anche essere personalizzato con estensioni per aggiungere supporto per nuovi formati di file, per arricchire l'interfaccia o per fornire un numero qualsiasi di altre funzionalità aggiuntive, consentendo una gamma molto più ampia di applicazioni per notebook rispetto a Jupyter Notebook. Il piano a lungo termine è quello di sostituire l'attuale interfaccia Jupyter Notebook con JupyterLab, ma solo dopo che JupyterLab si sarà dimostrato sufficientemente stabile e affidabile.

Limitazioni di Jupyter Notebook

Per quanto potente e utile possa essere Jupyter Notebook, presenta alcune limitazioni che devono essere prese in considerazione.

  • I taccuini non sono autonomi. Questo è l'unico più grande svantaggio dell'utilizzo di Jupyter Notebook: i notebook richiedono il runtime Jupyter, insieme a tutte le librerie che si prevede di utilizzare. Esistono alcune strategie per creare notebook Jupyter autonomi, ma nessuna di esse è ufficialmente supportata. È meglio distribuire i notebook a persone che dispongono già di un'infrastruttura per eseguirli o non si preoccupano della configurazione (tramite Anaconda, ad esempio).
  • Lo stato della sessione non può essere salvato facilmente.  Lo stato di qualsiasi codice in esecuzione in un notebook Jupyter non può essere conservato e ripristinato con il set di strumenti predefinito di Jupyter Notebook. Ogni volta che carichi il notebook, dovrai rieseguire il codice in esso contenuto per ripristinarne lo stato.
  • Nessun debug interattivo o altre funzionalità IDE.  Jupyter Notebook non è un ambiente di sviluppo completo per Python. Molte delle funzionalità che ci si aspetterebbe di trovare in un IDE, ad esempio debug interattivo, completamento del codice e gestione dei moduli, non sono disponibili lì.