exponenta event banner

Считывание данных электронной таблицы в таблицу

Лучший способ представления данных электронной таблицы в MATLAB ® - это таблица, в которой может храниться сочетание числовых и текстовых данных, а также имен переменных и строк. Данные можно считывать в таблицы в интерактивном или программном режиме. Для интерактивного выбора данных щелкните Импорт данных (Import Data) на вкладке Главная (Home) в разделе Переменная (Variable). Для программного импорта данных используйте одну из следующих функций:

  • readtable - Чтение одного рабочего листа.

  • spreadsheetDatastore - Чтение нескольких листов или файлов.

В этом примере показано, как программно импортировать данные электронной таблицы с использованием обеих функций. Данные образца, airlinesmall_subset.xlsx, содержит по одному листу за каждый год в период с 1996 по 2008 год. Имена листов соответствуют году, например 2003.

Считывание всех данных с листа

Звонить readtable считывание всех данных в документе 2008, а затем отображение только первых 10 строк и столбцов. Укажите имя листа с помощью Sheet аргумент пары имя-значение. Если данные находятся на первом листе в файле, указывать их не требуется 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   

Считывание выбранного диапазона из конкретного листа

Из листа с именем 1996, прочитайте только 10 строк данных из первых 5 столбцов, указав диапазон, 'A1:E11'. readtable функция возвращает таблицу 10 на 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  

Преобразовать переменные в значения даты, длительности или категории

В процессе импорта readtable автоматически определяет типы данных переменных. Однако если данные содержат нестандартные даты, длительности или повторяющиеся метки, их можно преобразовать в правильные типы данных. Преобразование переменных в правильные типы данных позволяет выполнять эффективные вычисления и сравнения, а также улучшает использование памяти. Например, представляют переменные Year, Month, и DayofMonth как один datetime переменная, UniqueCarrier как categorical, и ArrDelay как duration в минутах.

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);

Найдите день года с наибольшей задержкой, а затем отобразите дату.

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

Считывание всех листов из файла электронной таблицы

Хранилище данных полезно для обработки произвольно больших объемов данных, распределенных по нескольким листам или файлам электронных таблиц. Импорт и обработку данных можно выполнять через хранилище данных.

Создание хранилища данных из коллекции листов в airlinesmall_subset.xlsxвыберите переменные для импорта, а затем просмотрите данные.

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   

Перед импортом данных можно указать, какие типы данных следует использовать. Для этого примера выполните импорт UniqueCarrier как категориальная переменная.

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

Импорт данных с помощью readall или read функции. readall функция требует, чтобы все данные помещались в память, что верно для данных образца. После импорта вычислите максимальную задержку поступления для этого набора данных.

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

Для больших наборов данных импортируйте части файла с помощью read функция. Дополнительные сведения см. в разделе Чтение коллекции или последовательности файлов электронных таблиц.

См. также

|

Связанные темы