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

В этом примере показано, как использовать 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 и отобразите первые пять строк. The 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

См. также

| | | | | |

Похожие темы