Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Importar datos desde hojas de cálculo de Excel

MATLAB le proporciona las herramientas para importar datos de hojas de cálculo tanto de forma interactiva como mediante programación. Para importar datos de hoja de cálculo interactivamente, consulte Leer datos de hoja de cálculo mediante la herramienta importar. En este ejemplo se muestra cómo importar datos mediante programación mediante readtable y spreadsheetDatastore.

  • Utilice readtable cuando sus datos residen en una hoja de cálculo de un archivo de hoja de cálculos de Excel ®.

  • Utilice spreadsheetDatastore cuando sus datos residen en varias hojas de un archivo de hoja de cálculo o en una colección de varios archivos de hoja de cálculo.

Los datos utilizados para este ejemplo provienen de vuelos nacionales de aerolíneas de Estados Unidos entre 1996 y 2008. La información se organiza en un archivo Excel ® con varias hojas, donde cada hoja contiene datos durante 1 año. Descargue el conjunto de datos completo de http://Stat-Computing.org/dataexpo/2009/The-Data.html.

Importar datos de hoja de cálculo como tabla

Las hojas de cálculo contienen datos estructurados como columnas de números y texto. El tipo de datos MATLAB ® table proporciona una forma natural de trabajar con estos datos heterogéneos orientados a columnas. Puede utilizar tablas para almacenar nombres de variables o nombres de fila junto con los datos en un único contenedor.

Utilice la función readtable para importar datos de una hoja de cálculo a una tabla. La tabla resultante, airlinedata, contiene una variable para cada columna de la hoja de cálculo. De forma predeterminada, readtable trata los datos de la primera fila del archivo como nombres de variable.

airlinedata = readtable('airlinesmall_subset.xlsx');

Importar subconjunto de datos

Cuando desee importar sólo una parte de los datos de la hoja de cálculo, llame a la función readtable con el par nombre-valor Range. El valor del par nombre-valor Range especifica el subconjunto de filas y columnas que se importarán.

airlinedata = readtable('airlinesmall_subset.xlsx','Range','A1:F10');

Importar desde una hoja de cálculo específica

De forma predeterminada, readtable Lee los datos de la primera hoja de cálculo. Sin embargo, el par nombre-valor Sheet permite especificar la hoja de cálculo a la que se leerá. Por ejemplo, los datos de este ejemplo se organizan por hoja de cálculo por año. Importe los datos de una hoja de cálculo específica utilizando el argumento nombre-valor par para especificar el nombre de la hoja de cálculo.

airlinedata = readtable('airlinesmall_subset.xlsx','Sheet','2008');

Representar variables en la tabla con tipos de datos de MATLAB

Durante el proceso de importación, readtable detecta si los datos son de texto o numéricos. Sin embargo, para aprovechar la funcionalidad adicional ofrecida por los tipos de datos nativos de MATLAB, puede optar por convertir los tipos de datos de las variables. Por ejemplo, la conversión de variables con información de fecha y hora en datetime le permite realizar cálculos eficientes, comparaciones y visualización formateada de fechas y horas.

Cree una tabla más pequeña con sólo las variables que se convertirán, especificando los nombres de las variables.

data = airlinedata(:,{'Year','Month','DayofMonth','UniqueCarrier','ArrDelay'}); data(1:5,:)
ans=5×5 table
    Year    Month    DayofMonth    UniqueCarrier    ArrDelay
    ____    _____    __________    _____________    ________

    2008      1          3             'WN'             1   
    2008      1          4             'WN'            -4   
    2008      1          6             'WN'            22   
    2008      1          7             'WN'            24   
    2008      1          8             'WN'           -17   

readtable importa las primeras tres variables (columnas), Year, Month y DayofMonth, como datos numéricos que contienen información de fecha. La cuarta variable UniqueCarrier se importa como texto, que contiene etiquetas repetidas. Finalmente, la quinta variable ArrDelay se importa como datos numéricos, que contiene información de duración.

Representan Year, Month y DayofMonth como el datetime tipo, el UniqueCarrier como categorical, y ArrDelay como duration en minutos.

data.Date = datetime(data.Year,data.Month,data.DayofMonth); % Columns 1 through 3 data.UniqueCarrier = categorical(data.UniqueCarrier); data.ArrDelay = minutes(data.ArrDelay);

Importar datos de la colección de hojas de cálculo

Un datastore es útil para procesar cantidades arbitrariamente grandes de datos que se propagan a través de varios archivos. Tanto la importación de datos como el procesamiento de datos se pueden realizar a través del almacén.

Cree un datastore a partir de una colección de hojas de cálculo en airlinesmall_subset.xlsx y previsualice el contenido.

ds = spreadsheetDatastore('airlinesmall_subset.xlsx'); p = preview(ds); p(:,1:7)
ans=8×7 table
    Year    Month    DayofMonth    DayOfWeek    DepTime    CRSDepTime    ArrTime
    ____    _____    __________    _________    _______    __________    _______

    1996      1          18            4         2117         2120        2305  
    1996      1          12            5         1252         1245        1511  
    1996      1          16            2         1441         1445        1708  
    1996      1           1            1         2258         2300        2336  
    1996      1           4            4         1814         1814        1901  
    1996      1          31            3         1822         1820        1934  
    1996      1          18            4          729          730         841  
    1996      1          26            5         1704         1705        1829  

Seleccione las variables a importar especificando nombres de variables.

ds.SelectedVariableNames = {'Year','Month','DayofMonth','UniqueCarrier','ArrDelay'};

Para aprovechar la funcionalidad adicional de los tipos de datos nativos de MATLAB ®, puede especificar el tipo de datos de cada variable antes de importar los datos.

Importar UniqueCarrier como una variable categórica.

ds.SelectedVariableTypes(4) = {'categorical'}; 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   

Utilice las funciones read o readall para importar los datos del datastore. Puede importar los datos, un archivo a la vez, utilizando la función read o de todos los archivos del almacén con readall. De forma predeterminada, read trae todas las hojas de cálculo del archivo como una tabla.

alldata = read(ds);

Para controlar la cantidad de datos importados, ajuste la propiedad ReadSize del almacén, antes de llamar a read.

ds.ReadSize = 'sheet'; data1996 = read(ds); % reads first worksheet data1997 = read(ds); % reads the next worksheet

Leer y procesar datos de forma gradual desde hojas de cálculo

Cuando se trabaja con conjuntos de datos muy grandes, que pueden no encajar en la memoria, es útil procesar cada parte de forma incremental, tal y como se lee en el almacén.

Seleccione y procese los datos de interés de la tabla utilizando las funciones hasdata, read y reset, y calcule el retardo máximo de llegada para cada hoja de cálculo.

reset(ds) % start reading from the first sheet mdelay = []; while hasdata(ds)     t = read(ds);     m = max(t.ArrDelay);     mdelay = vertcat(mdelay,m); end

Mostrar la demora máxima de llegada para cada año.

year = 1996:2008 ;      mdelayInHours = mdelay/60; % Convert to hours plot(year,mdelayInHours,'-o','LineWidth',2); xlabel('Year') ylabel('Max Delay (hours)') title('Flight Delay Trend by Year')

Un procesamiento similar del almacén de la misma se puede utilizar con el Framework MapReduce en Matlab ®. Para obtener más información, consulte Analice grandes datos en Matlab usando MapReduce.