Лучший способ представлять данные об электронной таблице в MATLAB® находится в таблице, которая может сохранить соединение числовых и текстовых данных, а также имен строки и переменной. Можно считать данные в таблицы в интерактивном режиме или программно. Чтобы в интерактивном режиме выбрать данные, нажмите Import Data на вкладке Home в разделе Variable. Чтобы программно импортировать данные, используйте одну из этих функций:
readtable
Считайте один рабочий лист.
spreadsheetDatastore
Считайте несколько рабочих листов или файлов.
Этот пример показывает, как импортировать данные об электронной таблице программно с помощью обеих функций. Выборочные данные, airlinesmall_subset.xlsx
, содержат один лист в течение каждого года между 1 996 и 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
Datastore полезен для обработки произвольно больших объемов данных, которые распространены через несколько рабочих листов или несколько файлов электронной таблицы. Можно выполнить импорт данных и обработку данных через datastore.
Создайте datastore из набора рабочих листов в 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'};
Импортируйте данные с помощью функций read
или readall
. Функция readall
требует, что все совпадение данных в память, которая верна для выборочных данных. После импорта вычислите максимальную задержку прибытия этого набора данных.
alldata = readall(ds); max(alldata.ArrDelay)/60
ans = 15.2333
Для больших наборов данных, фрагментов импорта файла с помощью функции read
. Для получения дополнительной информации смотрите Набор Чтения или Последовательность Файлов электронной таблицы.
readtable
| spreadsheetDatastore