В этом примере показано, как использовать readtable функция для импорта смешанного текста и числовых данных в таблицу, указания типов данных для переменных, а затем добавления новой переменной в таблицу.
Образец файла, outages.csv, содержит данные, представляющие отключения электроэнергии в США. Первые несколько строк файла:
Region,OutageTime,Loss,Customers,RestorationTime,Cause
SouthWest,2002-01-20 11:49,672,2902379,2002-01-24 21:58,winter storm
SouthEast,2002-01-30 01:18,796,336436,2002-02-04 11:20,winter storm
SouthEast,2004-02-03 21:17,264.9,107083,2004-02-20 03:37,winter storm
West,2002-06-19 13:39,391.4,378990,2002-06-19 14:27,equipment fault
Импорт данных с помощью readtable и просмотрите первые пять строк. readtable функция автоматически обнаруживает разделитель и типы переменных.
T = readtable('outages.csv');
head(T,5)ans=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
_____________ ________________ ______ __________ ________________ ___________________
{'SouthWest'} 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 {'winter storm' }
{'SouthEast'} 2003-01-23 00:49 530.14 2.1204e+05 NaT {'winter storm' }
{'SouthEast'} 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 {'winter storm' }
{'West' } 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 {'equipment fault'}
{'MidWest' } 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 {'severe storm' }
Укажите переменные типы данных перед импортом
Обновление типов данных переменных до соответствующих типов данных MATLAB может принести пользу данным в зависимости от типа переменных в файле. Например, первый и шестой столбцы в outages.csv категоричны. Обозначив эти два столбца как categorical массивы, в которых можно использовать функции MATLAB для обработки категориальных данных.
Определите и укажите типы данных переменных одним из следующих способов:
Укажите Format пара имя-значение в readtable
Установите VariableTypes свойства параметров импорта для файла
Используйте Format пара «имя-значение» для указания типов переменных данных, считывания данных и отображения первых пяти строк. В %{yyyy-MM-dd HH:mm}D часть formatSpec спецификатор, текст между фигурными скобками описывает формат данных даты и времени. Значения, указанные в Format обозначить:
Первый и последний столбцы файла в виде категориальных данных
Второй и пятый столбцы в виде форматированных данных даты и времени
Третий и четвертый столбцы в виде значений с плавающей запятой
formatSpec = '%C%{yyyy-MM-dd HH:mm}D%f%f%{yyyy-MM-dd HH:mm}D%C'; T = readtable('outages.csv','Format',formatSpec); head(T,5)
ans=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
_________ ________________ ______ __________ ________________ _______________
SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm
SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm
SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm
West 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 equipment fault
MidWest 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 severe storm
Либо укажите типы данных для переменных с помощью setvartype функции параметров импорта. Сначала создайте объект параметров импорта для файла. Файл данных содержит переменные различных типов. Обозначить первую и последнюю переменные как categorical массивы, вторая и пятая переменные как datetime массивы и остальные переменные как double.
opts = detectImportOptions('outages.csv'); varNames = opts.VariableNames ; varTypes = {'categorical','datetime','double',... 'double','datetime','categorical'}; opts = setvartype(opts,varNames,varTypes);
Импорт данных с помощью readtable с opts, а затем отобразите первые пять строк.
T = readtable('outages.csv',opts);
head(T,5) ans=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
_________ ________________ ______ __________ ________________ _______________
SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm
SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm
SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm
West 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 equipment fault
MidWest 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 severe storm
Добавить новую переменную в таблицу
Стол T содержит OutageTime и RestorationTime. Рассчитайте продолжительность каждого отключения электричества и добавьте эти данные в таблицу.
T.Duration = T.RestorationTime - T.OutageTime; head(T,5)
ans=5×7 table
Region OutageTime Loss Customers RestorationTime Cause Duration
_________ ________________ ______ __________ ________________ _______________ _________
SouthWest 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 winter storm 148:32:00
SouthEast 2003-01-23 00:49 530.14 2.1204e+05 NaT winter storm NaN
SouthEast 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 winter storm 226:59:00
West 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 equipment fault 00:26:00
MidWest 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 severe storm 65:05:00
detectImportOptions | head | preview | readtable | readtimetable | setvaropts | setvartype