Prima str
Più che un informatico e un ingegnere, sono un essere umano. E come essere umano, vedere è una delle esperienze sensoriali più importanti e gratificanti che possiamo avere. Pertanto, per cominciare, presenterò la mia prima dashboard costruita sul framework Streamlit (con l'aiuto di Python, Panda e Altair).
introduzione
Cruscotti? Quadro? PowerBI? Perché non usare solo alcuni fogli Excel?
La parola "dashboard" è sicuramente una parola d'ordine di tendenza nel regno della scienza dei dati, dell'ingegneria dei dati, della business intelligence e così via. Ma cos'è una dashboard? E cosa posso farci?
In primo luogo, quando sentiamo la parola cruscotto, ci viene in mente più velocemente una polizia che trascina le auto nei film, invece di un sistema informatico pieno di grafici. "Non hai visto l'eccesso di velocità sul cruscotto dell'auto?" Bene... Una dashboard è semplicemente una cornice visiva che contiene alcuni indicatori di prestazioni chiave, grafici e statistiche. Possono essere reattivi, interattivi e aggiornati in tempo reale. Utilizzando un approccio diverso, sono strumenti per la visualizzazione di informazioni curate relative a uno scenario di caso specifico. Perché curato? Perché il sistema viene utilizzato di frequente ei dati devono essere mantenuti a un livello essenziale per evitare l'overfeeding dell'applicazione. Il tempo è fondamentale e più velocemente le informazioni vengono digerite, meglio è.
Quindi... Tableau e Power BI sono solo framework per creare dashboard e storie. Inoltre, Excel può essere utilizzato per creare dashboard. In effetti, Excel è il nonno dei cruscotti... Alla fine, la parola è solo un termine di fantasia usato per descrivere un sistema informativo contenente statistiche.
Come dicono alcuni, un'immagine è meglio di mille parole, quindi passiamo alla parte pratica. Concludiamo qui l'introduzione e passiamo alla selezione degli strumenti e alla scelta di un set di dati casuale per eseguire l'EDA, quindi troviamo i punti di stress che possono essere risolti o analizzati utilizzando la nostra dashboard e proviamo a rispondere. Tutto, durante il dashboarding in parallelo.
La pila
Per rompere in modo efficiente enormi quantità di rocce, è probabilmente necessario un set di strumenti potenti e dedicati. Il prossimo elenco descrive i diversi strumenti utilizzati nel mini progetto.
Illuminato . Framework open source che segue tre principi principali: scripting come elementi visivi, interazione tramite l'utilizzo di componenti come variabili e distribuzione rapida. In altre parole, con Streamlit è possibile creare dashboard visivamente accattivanti senza la necessità di saper utilizzare front-end e framework di styling. Questo paradigma consente al sistema di ignorare le specifiche di stile e concentrare tutta l'attenzione sulla definizione dei KPI e su quali metodi sono più adatti per rappresentarli.
Altair. Strumento di visualizzazione dei dati. Altair ha un obiettivo simile a Matplotlib, ma è stato costruito su un diverso insieme di principi. Lo stile di codifica segue un paradigma dichiarativo e la sua sintassi ricorda il formato JSON.
Panda . Libreria che può essere utilizzata per esplorare, pulire e manipolare dati tabulari. Consente di unire più tabelle, riempire i valori mancanti, convertire, pulire, filtrare e interrogare.
Scikit-Impara . La libreria offre molteplici strumenti per l'analisi dei dati. Dall'apprendimento automatico e modelli statistici, programmi di formazione, metriche per la quantificazione degli errori e previsioni dei dati. Utilizzando questo Scikit-Learn, è possibile analizzare i dati in modo facile e veloce. Ma tieni presente che i modelli implementati non sono all'avanguardia.
Numpy . Migliora il tempo necessario per i calcoli numerici all'interno dell'ecosistema Python. I dati nativi di Numpy sono costituiti da matrici N-Dimensionali.
Sottaceto . Questo strumento è utilizzato per la serializzazione e deserializzazione di oggetti Python.
Il set di dati
Il progetto si concentra sull'esplorazione di ciò che Streamlit ha da offrire, non sull'esecuzione di un progetto di data science curato end-to-end. Quindi il set di dati che sceglieremo è quasi scelto per pura fortuna.
I nostri risultati consistono in un set di dati sul mercato immobiliare di Seattle (USA). Le istanze sono state raccolte tra maggio'14 e maggio'15.
I componenti
Ora è il momento di controllare i vari componenti che si sommano alla dashboard finale. Controlla l'implementazione completa sulla mia pagina di Github (https://github.com/LOCLuisPereira/streamlit_house_market).
Metriche KPI iniziali
Queste metriche KPI sono la prima cosa che l'utente vede. Dovrebbero fornire informazioni importanti in modo conciso. Streamlit offre un componente simile a una scheda (streamlit.metric), in cui è possibile definire il titolo KPI, il valore e un delta. Sono utilizzati per l'identificazione, la quantificazione e la fluttuazione del valore di misura.
Nel nostro caso, abbiamo il numero totale di case e alcune altre medie sul mercato immobiliare di Seattle (come il prezzo medio delle case, il numero di piani e così via).
Mappa di Seattle e distribuzione delle case
Streamlit ha un componente mappa che consente allo sviluppatore di creare rapidamente una parola o una mappa della città (streamlit.map). Questo componente è abbastanza semplice e non richiede requisiti complessi, poiché il suo grado di personalizzazione è basso.
Prendiamo ad esempio, per controllare la distribuzione dell'istanza su una data città il componente è sufficiente. Ma per visualizzare la distribuzione dei cluster e il rispettivo colore, è necessario un altro strumento.
Utilizzo del grafico della mappa di Altair per la visualizzazione del clustering
Il componente nativo della mappa di Streamlit utilizza Altair sotto il cofano. Così semplice. Abbiamo affermato in precedenza che questo componente è plug-and-play, ma non offre alcun tipo di personalizzazione. Un'alternativa all'implementazione nativa consiste nell'utilizzare Altair Chart e collegarlo al componente Streamlit-Altair Chart.
La posizione è fondamentale. In particolare, sul mercato immobiliare. La stessa casa può avere il suo valore moltiplicato per 20 volte semplicemente trovandosi vicino all'oceano o trovandosi all'interno di una grande città.
Per assicurarci che sia effettivamente vero, abbiamo condotto un esperimento. Utilizzando Scikit-Learn e le sue implementazioni K-Means, eseguiamo l'algoritmo con un numero diverso di cluster (da 2 a 10). La longitudine e la latitudine sono state utilizzate come caratteristiche. Ad ogni corsa, controlliamo il prezzo medio delle abitazioni.
Il passaggio finale, la visualizzazione, è stato realizzato unendo tre componenti. Un dispositivo di scorrimento per selezionare il numero desiderato di cluster. Una mappa di Altair per mostrare le istanze e la loro posizione sulla mappa. E un dataframe, per mostrare il prezzo medio per ogni cluster.
Alla fine, la posizione conta davvero. Mentre andiamo dal sud al nord, i prezzi delle case salgono. Le case sul lato sinistro di Seattle tendono ad essere meno costose. Nel mercato immobiliare, diversi fattori possono influenzare il prezzo. Ad esempio, le case sul lato destro sono più vicine alla terraferma ed è facile spostarsi verso altre parti di Seattle o città vicine. Questo motivo non è cruciale, ma può incidere sul prezzo finale della casa.
Grado e condizione
Questo componente è semplice e breve. Utilizzando due grafici a barre, `streamlit.bar_chart`, abbiamo tracciato la distribuzione di grado e condizione. Visualizzando il grafico, concludiamo che la maggior parte delle istanze si trova nel mezzo (per entrambi i grafici).
Abbiamo tracciato queste due caratteristiche l'una contro l'altra. Se consideriamo il punteggio medio neutrale, allora la maggior parte delle case tende a trovarsi sul lato neutro dei punteggi. Se non neutrali, cadono su un timido punteggio positivo.
Che ne dici di lavori di ristrutturazione della casa? Un'altra serie di KPI
Utilizzando streamlit.metric, abbiamo implementato tre metriche KPI in linea per analizzare rapidamente i dati relativi ai lavori di ristrutturazione delle case. Abbiamo mostrato il numero di case ristrutturate, la loro rappresentazione rispetto al resto e qual è il periodo di tempo tra l'anno di costruzione e quello di ristrutturazione.
Guardando il cruscotto, abbiamo scoperto che 914 case sono state ristrutturate. E le case tendono ad essere restaurate dopo 56 anni dalla loro costruzione.
Una dashboard senza un grafico a linee? Impossibile…
I grafici a linee tendono ad essere abbastanza comuni. Streamlit offre un componente wrap per tracciarli in modo facile e veloce. Sulla nostra dashboard, li usiamo per vedere le vendite di case al mese.
Dai una rapida occhiata... I mesi più venduti sono stati luglio 2014 e aprile 2015.
Camere da letto e bagni? Impilarli o bilanciarli?
A volte, più non è strettamente correlato a meglio. Per confermarlo o smentirlo, implementiamo un char della mappa termica che mette in relazione il numero di camere da letto, i bagni e il prezzo medio per ogni combinazione camera-bagno.
Osservando il nuovo grafico, si nota che bilanciare il numero di camere da letto e bagni è fondamentale. L'industria favorisce rapporti 1:1 e più bagni che camere da letto.
Quando si impila la camera da letto, il prezzo tende ad essere nella stessa gamma. Ma quando si aggiungono i bagni, il prezzo tende sempre ad aumentare.
Questo può probabilmente essere spiegato seguendo un semplice ragionamento. Alla gente non piace aspettare, e alla gente non piace condividere spazi estremamente riservati. In sintesi, consentire a residenti e ospiti di avere un più alto grado di privacy porta a valori più alti nelle proprietà.
Ho una proprietà a Seattle... Potete aiutarmi a trovare un prezzo equo per la vendita?
Possiamo scomporre questa domanda in due problemi minori. Cosa possiamo fare per collegare il flusso di informazioni dall'utente al nostro sistema informativo. E possiamo utilizzare qualsiasi algoritmo di apprendimento automatico per digerire i dati e attribuire un possibile prezzo date le informazioni di input.
Streamlit offre diversi componenti che collegano automaticamente la comunicazione tra utente e sistema. In questo caso specifico, utilizzeremo i componenti del modulo. Questi componenti consentono l'unione di altri componenti con il solo requisito di un pulsante finale, che attiva l'invio dei dati.
Le informazioni dal componente del modulo vengono inserite in due modelli preaddestrati. Dopo l'inferenza, i dati vengono inviati al dashboard e gli utenti possono vedere due possibili stime del valore.
Poiché la missione del progetto è creare una dashboard ed esplorare la maggior parte dei componenti di Streamlit, abbiamo utilizzato due algoritmi di base del modello di apprendimento automatico, implementati su Scikit-Learn. Alla fine, abbiamo una dorsale bayesiana e una foresta casuale con un punteggio R2 di 0,54 e 0,87 su tutti i dati.
Ci si può chiedere, perché mantenere un modello con un punteggio di 0,54? Abbiamo tenuto è come uno scherzo. Il modello a volte emette valori negativi. In parole povere, il modello ci dice che possiamo comprare una casa... e ricevere i soldi per mantenerla.
Cosa c'è dentro il Dataframe?
Per questo compito, Streamlit offre tre diverse opzioni. Uno per tabelle statiche, uno per dataframe e un altro per JSON. Qui, ci concentreremo sugli ultimi due.
La funzione di Dataframe emette una tabella che consente di visualizzare la struttura del set di dati in modo tabulare. È possibile ordinare le colonne in ordine crescente o decrescente, il che migliora la visualizzazione e la semantica dei dati.
L'output di JSON assomiglia alla funzione di dumping, con indentazione, che è nativa della libreria JSON di Python.
Entrambi i componenti hanno un caso d'uso. Il componente dataframe può essere utilizzato per analizzare rapidamente le informazioni e, ad esempio, trovare massimi, minimi, controllare valori mancanti o nulli e così via. Quello JSON è eccellente per controllare la struttura dei dati e quale tipo tranne per ogni campo sul set di dati.
Finali
Questa è la fine della strada per questo progetto. Non abbiamo esplorato alcun algoritmo delicato o all'avanguardia. Erano semplici in teoria e in attuazione. Ma con questa implementazione, siamo in grado di meditare e rispondere a domande su quanto è buono il framework e se è compatibile con il nostro stack.
Alla fine, Streamlit è in grado di offrire ciò che propone. Creare una dashboard è facile come scrivere uno script. I dati sono mostrati in modo interattivo e organizzato. Anche se non l'abbiamo presentato, implementare un prototipo è facile e veloce.
In questo momento, possiamo vedere solo due possibili aspetti negativi. Instradamento e styling. Instradamento per dashboard multipagina. Styling per estendere l'attuale meccanismo di styling e consentire un più alto grado di personalizzazione.
La mia opinione personale su Streamlit è semplice. Sono abbastanza entusiasta di utilizzare nei miei altri progetti. La creazione di prototipi o dashboard interni è veloce, i risultati sono esteticamente gradevoli e l'EDA diventa ancora più entusiasmante... grazie alla semplicità con cui possiamo visualizzare i dati sul frontend.
Bonus. E i dashboard in tempo reale?
Nel nostro progetto non avevamo bisogno di aggiornare i dati in tempo reale. Ma Streamlit offre metodi per implementare la visualizzazione dei dati in tempo reale. Il meccanismo è semplice. Crea un componente vuoto, imposta un loop, recupera e alimenta i dati... Voilà! Flussi di dati continui e in tempo reale. Vedere le immagini seguenti come prova delle capacità del framework.
Quello! Arrivederci alla prossima.

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































