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
readtable | spreadsheetDatastore