MATLAB CORSO BASE - 02 Importazione e tracciamento dati

in #ita7 years ago (edited)

Lesson 01 (1).png

Dopo aver introdotto nel precedente post cos’è Matlab, i tipi di licenze, come definire una variabile che sia uno scalare o una matrice, quali sono i formati principali e le funzioni di uso comune, oggi andremo ad analizzare l’importazione dei dati e la creazione di grafici.


L’importazione e il tracciamento dei dati

Il software è in grado di importare dati in vettori o matrici in modo da poter creare velocemente un file “.mat” che potremo salvare e ricaricare a piacere.
Il file ".mat" andrà a salvare tutte le variabili presenti nel Workspace nel momento di invocazione della funzione apposita.
Questo ci permette di non dover inserire manualmente dati che possiamo recuperare dal web o da altri file già in nostro possesso facendoci risparmiare tempo prezioso che potremo invece dedicare all’analisi e alla modellazione.

Alcune funzioni molto utili ci permettono di tracciare dei grafici relazionando differenti variabili.
Possiamo modificarne il layout generico, inserire legende, cambiare i colori, le tipologie di linee con libero sfogo alla fantasia.

Come importare i dati?

Nella Current Folder, che come abbiamo visto nella prima lezione è un manager dei file, possiamo cliccare col tasto destro il file dati e selezionare la voce import.
In questo modo si aprirà una finestra dove potremo scegliere il tipo dei dati, il tipo di variabile e tante altre opzioni di importazione.

Qui è possibile trovare tutti i formati compatibili con Matlab.

Sono ora invece descritte le funzioni che serviranno per comprendere e riapplicare i concetti introdotti precedentemente.

FUNZIONIUTILIZZO
clearCancella tutte le variabili nel Workspace
clcCancella la Command Window e posiziona in alto il cursore
figureApre una finestra dove potremo creare un immagine
plot(X,Y)Crea un grafico 2-D di Y rispetto a X
ylabel(‘testo’)Crea un titolo di testo sull’asse y
xlabel(‘testo’)Crea un titolo di testo sull’asse x
title(‘testo’)Crea un titolo di testo alla figura
subplot(m,n,b)Suddivide la figura corrente in una griglia mxn (m righe, n colonne) e crea degli assi nella posizione di b
legendInserisce la legenda nella figura corrente
%Riga di commento
plot(X,Y,'coloreOstile1',X,Z,'coloreOstile2')Traccia due grafici sugli stessi assi definendo il colore e la tipologia di linea

Qui potete trovare tutti i metodi di utilizzo della funzione "plot" e anche cercare ogni tipologia di funzione.

1.png

Questa immagine è rappresentativa della posizione di "b" nella funzione "subplot" nel caso in cui m=2 ed n=3.


Esempio pratico: Analisi della capitalizzazione di mercato e volume di Bitcoin tramite importazione di file .xlsx

Per prima cosa dobbiamo decidere da dove importare i dati sulla capitalizzazione di mercato del Bitcoin.
La mia scelta è ricaduta sul coinmarketcap dove, cliccando su “Bitcoin”, veniamo rimandati ad un'altra pagina in cui possiamo visualizzare il prezzo in USD e la capitalizzazione di mercato.
Questa visualizzazione in forma grafica non è il miglior modo per introdurre dati su Matlab ed è per questo che andremo a cliccare su “Dati Storici” filtrandoli dal 1° di Gennaio 2018 ad oggi.

Ora che abbiamo a disposizione i dati andremo ad esportarli in formato .xlsx tramite l’utilizzo di Excel:

  1. Apriamo un nuovo foglio Excel
  2. Andiamo su “Dati” nella barra degli strumenti e selezioniamo il pulsante “Da web”
  3. Si aprirà una finestra dove andremo ad inserire l’url
    https://coinmarketcap.com/it/currencies/bitcoin/historical-data/?start=20180101&end=20180313
  4. Dopo il caricamento si aprirà una nuova finestra dove selezioneremo la voce “Table” e successivamente “Modifica”
  5. Si aprirà un editor dove potremo selezionare gli elementi della tabella che vogliamo importare.
  6. *Per i nostri scopi ci basta mantenere le colonne Data, Volume, Cap. del Mercato. *
  7. Clicchiamo su “Salva e Carica” ed otterremo la nostra tabella su foglio di lavoro Excel
  8. Salviamo il file .xlsx sul nostro PC

Ora possiamo entrare in ambiente Matlab e iniziare ad importare i dati.

  1. Apriamo Matlab e clicchiamo “Import Data” selezionando il nostro file .xlsx

  2. Si aprirà una sotto-finestra dove andremo a modificare in “Column Vectors” l’Output Type

  3. Modifichiamo i nomi delle tre colonne in Data, Volume e Capdelmercato (Giorno, Volume nelle 24h e Capitalizzazione di Mercato del giorno stesso) semplicemente cliccando sul testo in grassetto

  4. Modifichiamo il tipo di Data in “Datetime”, formato di tipo data

  5. Selezioniamo la prima colonna e clicchiamo “Import”

  6. Utilizziamo lo stesso procedimento per la seconda e terza colonna

  7. Ora abbiamo 3 vettori 72x1 di tipo datetime per le date e di tipo Double per gli altri due

  8. Cliccando sui nostri vettori nel workspace apriamo un editor dove potremo andare a modificare i valori manualmente e sostituire o rimuovere le celle NaN (not a number) che indicano una perdita di informazioni.

  9. Per una lettura più comprensibile dei dati utilizzeremo il Volume e la Capitalizzazione in miliardi di dollari.

       >> Volume=Volume/(10^9);
       >> MarketCap=MarkedCap/(10^9);
    

Notiamo che i due vettori vengono modificati in miliardi di dollari e salvati su se stessi. Questo permette di risparmiare memoria ma bisogna prestare attenzione ed essere sicuri del calcolo che si sta effettuando.
Se commettessimo un errore non potremmo tornare indietro.
Notiamo inoltre che essendo vettori la divisione avviene per ogni singolo elemento del vettore, quindi stiamo dividendo tutti e 72 gli elementi per 10^9 con un solo comando!

Ora che abbiamo ottenuto i dati nella forma che più ci aggrada andremo a salvare il nostro Workspace per un successivo riutilizzo e per avere un checkpoint nel caso di errori irreversibili.

      >> save First72dayof2018
      >> clear all
      >> clc

A questo punto saremo di nuovo con un foglio di lavoro Matlab completamente vuoto.
Andiamo ora a ricaricare il Workspace per verificare l’avvenuto salvataggio delle variabili.

      >> load First72dayof2018

Notiamo subito la ricomparsa delle variabili all’interno del Workspace.
In questo momento siamo già in grado di tracciare il grafico di volume e capitalizzazione di mercato in funzione della data.


1° Esempio di plot

      >> plot(Data,Volume)
      >> xlabel('Data')
      >> ylabel('Volume in Miliardi di $')
      >> title('Volume giornaliero Bitcoin dal 1° di Gennaio ad oggi')

In questo modo stiamo creando un grafico con il vettore Data sull’asse delle x e il vettore Volume sull’asse delle y. Il primo elemento di Data sarà legato al primo elemento di Volume.
Le due funzioni successive mi permettono di inserire un testo sugli assi senza utilizzare il toolbox grafico mentre la funzione title, come intuibile dal nome, inserisce un titolo alla figura.
Una volta eseguiti i comandi si aprirà una finestra con il grafico; da qui possiamo salvare in diversi formati l’immagine.

VolumeBTC_single.png

Allo stesso modo possiamo disegnare la capitalizzazione di mercato su base giornaliera.

      >> plot(Data,Capdelmercato)
      >> xlabel('Data')
      >> ylabel('Cap. in Miliardi di $')
      >> title('Capitalizzazione di mercato Bitcoin dal 1° di Gennaio ad oggi')

CapBTC_single.png


2° Esempio di plot

      >> subplot(3,1,1)
      >> plot(Data,Volume)
      >> xlabel('Data')
      >> ylabel('Volume in miliardi di Dollari $')
      >> title('Volume giornaliero Bitcoin dal 1° Gennaio 2018 ad oggi')
      >> subplot(3,1,2)
      >> plot(Data,MarketCap)
      >> xlabel('Data')
      >> ylabel('Cap. in miliardi di Dollari $')
      >> title('Capitalizzazione di mercato giornaliera Bitcoin dal 1° di Gennaio ad oggi')
      >> subplot(3,1,3)
      >> plot(Data,Volume,'r',Data,MarketCap,'b')
      >> xlabel('Date')
      >> ylabel('Cap+Volume in miliardi di Dollari $')
      >> title('Volume e capitalizzazione giornalieri Bitcoin dal 1° di Gennaio ad oggi')
      >> legend

In questo caso siamo andati a creare una sola figura con tre grafici differenti: il primo indica il volume, il secondo la capitalizzazione e il terzo entrambi ma sullo stesso grafico.
Una volta creato il grafico, nella finestra aperta, clicchiamo sul simbolo “Show plot tools and Dock figure”.
In questo modo apriamo il toolbox grafico dove possiamo cambiare i colori dello sfondo, i colori delle linee, aggiungere/togliere i titoli agli assi o alla figura, cambiare le scale, disegnare sul grafico, aggiungere altre variabili, gestire il layout di immagine.
Andiamo in questo modo a modificare la legenda cliccando su ”data1” e ”data2” e inserendo il nome che identifica nel modo migliore i dati. In questo caso Volume per data1 e Capitalizzazione per data2.

Vol_Cap_BTC.png


3° Esempio di plot

L’ultimo esempio consiste nel non utilizzare la Command Window ma creare uno script con esattamente gli stessi comandi dei precedenti esempi.
In questo modo potremo salvarci i comandi e, una volta caricato il nostro Workspace mandare semplicemente in run lo script per ottenere i grafici fin qui mostrati.

     clear
     close
     %% Import Data from 1 January 2018 to 12 March 2018 about Volume and Market Capitalization                       of Bitcoin cripcocurrency
     load('First72dayof2018.mat') %this file is stored in Bitcoin_Data_Folder 
     % Volmue, Date and MarketCap are imported in our Workspace.
     %% 1° Example:  Plotting Volume-Date and MarketCap
     figure
     plot(Date,Volume)
     xlabel('Date')
     ylabel('Volume in Bilion USD $')
     title('Daily Bitcoin Volume from 1° January to today')
     figure
     plot(Date,MarketCap)
     xlabel('Date')
     ylabel('Cap. in Bilion USD $')
     title('Bitcoin Market Capitalizzation from 1° January to today')
     %% 2° Example: Plotting Volume-Data, MarketCap_Data and VolMarketCap_Data in the same plot
     figure
     subplot(3,1,1)
     plot(Date,Volume)
     xlabel('Date')
     ylabel('Volume in Bilion USD $')
     title('Daily Bitcoin Volume from 1° January to today')
     subplot(3,1,2)
     plot(Date,MarketCap)
     xlabel('Date')
     ylabel('Cap. in Bilion USD $')
     title('Bitcoin Market Capitalizzation from 1° January to today')
     subplot(3,1,3)
     plot(Date,Volume,'r',Date,MarketCap,'b')
     xlabel('Date')
     ylabel('Cap+Volume Bilion USD $')
     title('Bitcoin Volume and Market Capitalizzation from 1° January to today')
     legend

Conclusioni

In questa seconda lezione del corso mi è sembrato più opportuno introdurre un esempio pratico preceduto da qualche piccolo spunto teorico e dall'illustrazione del funzionamento delle funzioni utilizzate.

Al fine di rendere quanto più didattico possibile il corso, ho deciso di fornirvi una parte della mia memoria cloud di Drive dove potete trovare delle cartelle con il materiale per poter eseguire autonomamente l'esercitazione proposta.
Basterà scaricare la cartella "Lesson 02" e selezionarla nella Current Folder.
Qui il link di condivisione della cartella Drive.


Bibliografia e fonti

  • Corso di Fondamenti di Matlab al Politecnico di Milano
  • Corso online Matlab Fundamentals fornito da MathWorks
  • L'esercitazione è creata interamente dal Team Daedevils

Fonti immagini:

  • CCO licence
  • Le restanti immagini sono create dal Team Daedevils e sono di sua proprietà

Indice

  1. Lezione 01 - Introduzione

votaXdavinci.witness.jpgImmagine CC0 Creative Commons, si ringrazia @mrazura per il logo ITASTEM.
CLICK HERE AND VOTE FOR "DAVINCI.WITNESS"


2.png