Leer datos de hojas de cálculo en una tabla
La mejor manera de representar datos de hojas de cálculo en MATLAB® es en una tabla, que puede almacenar una combinación de datos numéricos y de texto, así como nombres de variables y filas. Puede leer datos en tablas de manera interactiva o programática. Para seleccionar datos de manera interactiva, haga clic en Import data en la pestaña Home, en la sección Variable. Para importar datos de manera programática, use una de las siguientes funciones:
readtable
: leer una sola hoja de cálculo.spreadsheetDatastore
: leer varias hojas de cálculo o archivos.
Este ejemplo muestra cómo importar datos de hojas de cálculo de manera programática usando ambas funciones. Los datos de muestra, airlinesmall_subset.xlsx
, contienen una hoja para cada año entre 1996 y 2008. Los nombres de las hojas corresponden al año, como 2003
.
Leer todos los datos de una hoja de cálculo
Llame a readtable
para leer todos los datos de la hoja de cálculo llamada 2008 y, después, muestre solo las 10 primeras filas y columnas. Especifique el nombre de la hoja de cálculo usando el argumento de par nombre-valor Sheet
. Si sus datos están en la primera hoja de cálculo del archivo, no tiene que especificar 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
Leer el rango seleccionado de una hoja de cálculo específica
En la hoja de cálculo llamada 1996
, lea solo 10 filas de datos de las primeras 5 columnas especificando un rango, 'A1:E11'
. La función readtable
devuelve una tabla de 10 por 5.
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
Convertir variables en variables de fecha y hora, duración o categóricas
Durante el proceso de importación, readtable
detecta automáticamente los tipos de datos de las variables. Sin embargo, si los datos contienen fechas, duraciones o etiquetas repetidas no estándar, puede convertir dichas variables en sus tipos de datos correctos. Convertir las variables en sus tipos de datos correctos le permite realizar cómputos y comparaciones eficientes y mejora el uso de la memoria. Por ejemplo, puede representar las variables Year
, Month
y DayofMonth
como una variable datetime
, UniqueCarrier
como categorical
y ArrDelay
como duration
en minutos.
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);
Encuentre el día del año con mayor retraso y luego muestre la fecha.
ind = find(data.ArrDelay == max(data.ArrDelay)); data.Date(ind)
ans = datetime
07-Apr-2008
Leer todas las hojas de cálculo de un archivo de hoja de cálculo
Un almacén de datos es útil para procesar cantidades arbitrariamente grandes de datos distribuidos por varias hojas de cálculo o varios archivos de hoja de cálculo. Puede importar y procesar los datos a través del almacén de datos.
Cree un almacén de datos a partir de la recopilación de hojas de cálculo de airlinesmall_subset.xlsx
, seleccione las variables que se importarán y, después, previsualice los datos.
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
Antes de importar los datos, puede especificar qué tipos de datos usar. Para este ejemplo, importe UniqueCarrier
como una variable categórica.
ds.SelectedVariableTypes(4) = {'categorical'};
Importe los datos usando las funciones readall
o read
. La función readall
requiere que todos los datos quepan en la memoria, condición que se cumple en los datos de muestra. Después de la importación, calcule el retraso de llegada máximo de este conjunto de datos.
alldata = readall(ds); max(alldata.ArrDelay)/60
ans = 15.2333
Para conjuntos de datos grandes, importe partes del archivo usando la función read
. Para obtener más información, consulte Leer una recopilación o secuencia de archivos de hoja de cálculo.
Consulte también
readtable
| spreadsheetDatastore