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

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

  • 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'. The 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  

Преобразуйте переменные в Datetimes, Durations или Categorical

В процессе импорта 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'};

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

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

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

См. также

|

Похожие темы