Импортируйте смешанные данные от текстового файла

Этот пример показывает, как использовать функцию 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) % show first 5 rows of table
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 ; % variable names
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    01-Feb-2002 12:18:00    458.98    1.8202e+06    07-Feb-2002 16:50:00    winter storm   
    SouthEast    23-Jan-2003 00:49:00    530.14    2.1204e+05                     NaT    winter storm   
    SouthEast    07-Feb-2003 21:15:00     289.4    1.4294e+05    17-Feb-2003 08:14:00    winter storm   
    West         06-Apr-2004 05:44:00    434.81    3.4037e+05    06-Apr-2004 06:10:00    equipment fault
    MidWest      16-Mar-2002 06:18:00    186.44    2.1275e+05    18-Mar-2002 23:23:00    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    01-Feb-2002 12:18:00    458.98    1.8202e+06    07-Feb-2002 16:50:00    winter storm       148:32:00
    SouthEast    23-Jan-2003 00:49:00    530.14    2.1204e+05                     NaT    winter storm             NaN
    SouthEast    07-Feb-2003 21:15:00     289.4    1.4294e+05    17-Feb-2003 08:14:00    winter storm       226:59:00
    West         06-Apr-2004 05:44:00    434.81    3.4037e+05    06-Apr-2004 06:10:00    equipment fault     00:26:00
    MidWest      16-Mar-2002 06:18:00    186.44    2.1275e+05    18-Mar-2002 23:23:00    severe storm        65:05:00

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

| | | | |

Похожие темы

Была ли эта тема полезной?