Contenuto principale

Lettura dei dati del foglio di calcolo nella tabella

Il modo migliore per rappresentare i dati di un foglio di calcolo in MATLAB® è in forma di tabella che può memorizzare una combinazione di dati numerici e testuali, nonché nomi di variabili e di righe. È possibile leggere i dati nelle tabelle in modo interattivo o programmatico. Per selezionare i dati in modo interattivo, fare clic su Import Data (Importa dati) nella scheda Home, nella sezione Variable (Variabile). Per importare i dati in modo programmatico, utilizzare una delle seguenti funzioni:

  • readtable: leggere un singolo foglio di lavoro.

  • spreadsheetDatastore: leggere più fogli di lavoro o file.

Questo esempio mostra come importare i dati di un foglio di calcolo in modo programmatico utilizzando entrambe le funzioni. I dati di campionamento airlinesmall_subset.xlsx, contengono un foglio per ogni anno compreso tra il 1996 e il 2008. I nomi dei fogli corrispondono all'anno, ad esempio 2003.

Lettura di tutti i dati dal foglio di lavoro

Chiamare readtable per leggere tutti i dati nel foglio di lavoro denominato 2008, quindi visualizzare solo le prime 10 righe e colonne. Specificare il nome del foglio di lavoro utilizzando l'argomento della coppia nome-valore Sheet. Se i dati si trovano nel primo foglio di lavoro del file, non è necessario specificare Sheet.

T = readtable('airlinesmall_subset.xlsx','Sheet','2008');
T(1:10,1:10)
ans=10×10 table
    Year    Month    DayofMonth    DayOfWeek    DepTime    CRSDepTime    ArrTime    CRSArrTime    UniqueCarrier    FlightNum
    ____    _____    __________    _________    _______    __________    _______    __________    _____________    _________

    2008      1           3            4         1012         1010        1136         1135          {'WN'}           752   
    2008      1           4            5         1303         1300        1411         1415          {'WN'}          1161   
    2008      1           6            7         2134         2115        2242         2220          {'WN'}          1830   
    2008      1           7            1         1734         1655          54           30          {'WN'}           302   
    2008      1           8            2         1750         1755        2018         2035          {'WN'}          1305   
    2008      1           9            3          640          645         855          905          {'WN'}           896   
    2008      1          10            4         1943         1945        2039         2040          {'WN'}           120   
    2008      1          11            5         1303         1305        1401         1400          {'WN'}          1685   
    2008      1          13            7         1226         1230        1415         1400          {'WN'}          1118   
    2008      1          14            1         1337         1340        1623         1630          {'WN'}           730   

Lettura di un intervallo selezionato da un foglio di lavoro specifico

Dal foglio di lavoro denominato 1996, leggere solo 10 righe di dati dalle prime 5 colonne specificando un intervallo 'A1:E11'. La funzione readtable restituisce una tabella 10x5.

T_selected = readtable('airlinesmall_subset.xlsx','Sheet','1996','Range','A1:E11')
T_selected=10×5 table
    Year    Month    DayofMonth    DayOfWeek    DepTime
    ____    _____    __________    _________    _______

    1996      1          18            4         2117  
    1996      1          12            5         1252  
    1996      1          16            2         1441  
    1996      1           1            1         2258  
    1996      1           4            4         1814  
    1996      1          31            3         1822  
    1996      1          18            4          729  
    1996      1          26            5         1704  
    1996      1          11            4         1858  
    1996      1           7            7         2100  

Conversione delle variabili in date e ore, durate o categoriche

Durante il processo di importazione, readtable rileva automaticamente i tipi di dato delle variabili. Tuttavia, se i dati contengono date, durate o etichette ripetute non standard, è possibile convertire tali variabili nei tipi di dato corretti. La conversione delle variabili nei tipi di dato corretti consente di eseguire calcoli e confronti efficienti e migliora l'utilizzo della memoria. Ad esempio, rappresentare le variabili Year, Month e DayofMonth come una variabile datetime, UniqueCarrier come categorical e ArrDelay come duration in minuti.

data = T(:,{'Year','Month','DayofMonth','UniqueCarrier','ArrDelay'});
data.Date = datetime(data.Year,data.Month,data.DayofMonth);
data.UniqueCarrier = categorical(data.UniqueCarrier);
data.ArrDelay = minutes(data.ArrDelay);

Trovare il giorno dell'anno con il ritardo maggiore e visualizzare la data.

ind = find(data.ArrDelay == max(data.ArrDelay));
data.Date(ind)
ans = datetime
   07-Apr-2008

Lettura di tutti i fogli di lavoro dal file del foglio di calcolo

Un datastore è utile per elaborare quantità di dati arbitrariamente grandi distribuiti su più fogli di lavoro o su più file del foglio di calcolo. È possibile eseguire l'importazione e l'elaborazione dei dati tramite il datastore.

Creare un datastore dalla raccolta di fogli di lavoro in airlinesmall_subset.xlsx, selezionare le variabili da importare, quindi visualizzare l'anteprima dei dati.

ds = spreadsheetDatastore('airlinesmall_subset.xlsx');
ds.SelectedVariableNames = {'Year','Month','DayofMonth','UniqueCarrier','ArrDelay'};
preview(ds)
ans=8×5 table
    Year    Month    DayofMonth    UniqueCarrier    ArrDelay
    ____    _____    __________    _____________    ________

    1996      1          18           {'HP'}            6   
    1996      1          12           {'HP'}           11   
    1996      1          16           {'HP'}          -13   
    1996      1           1           {'HP'}            1   
    1996      1           4           {'US'}           -9   
    1996      1          31           {'US'}            9   
    1996      1          18           {'US'}           -2   
    1996      1          26           {'NW'}          -10   

Prima di importare i dati, è possibile specificare quali tipi di dato utilizzare. Per questo esempio, importare UniqueCarrier come variabile categorica.

 ds.SelectedVariableTypes(4) = {'categorical'};

Importare i dati utilizzando le funzioni readall o read. La funzione readall richiede che tutti i dati siano contenuti nella memoria, condizione vera per i dati di campionamento. Dopo l'importazione, calcolare il ritardo massimo di arrivo per questo insieme di dati.

alldata = readall(ds);
max(alldata.ArrDelay)/60
ans = 
15.2333

Per gli insiemi di dati di grandi dimensioni, importare porzioni del file utilizzando la funzione read. Per maggiori informazioni, vedere Read Collection or Sequence of Spreadsheet Files (Leggere una raccolta o una sequenza di file del foglio di calcolo).

Vedi anche

|

Argomenti