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

Лучший способ представлять данные об электронной таблице в 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  

Преобразуйте переменные в Datetimes, длительность или Categoricals

Во время процесса импорта 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. Для получения дополнительной информации смотрите Набор Чтения или Последовательность Файлов электронной таблицы.

Смотрите также

|

Похожие темы