ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

テキスト ファイルからの混在するデータのインポート

この例では、関数 readtable を使用して、テキストと数値が混在するデータを table にインポートし、変数のデータ型を指定してから、新しい変数を table に追加する方法を説明します。

サンプル ファイル概要

サンプル ファイル 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 を使用してデータをインポートし、最初の 5 行を表示します。関数 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 の 1 番目と 6 番目の列は categorical です。これら 2 つの列を categorical 配列として指定することで、categorical データの処理に MATLAB 関数を利用できます。

次のいずれかの方法で、変数のデータ型を指定します。

  • readtable で名前と値のペア Format を指定

  • ファイルのインポート オプションの VariableTypes プロパティを設定

名前と値のペア Format を使用して変数のデータ型を指定し、データを読み取り、最初の 5 行を表示します。formatSpec 指定子の %{yyyy-MM-dd HH:mm}D の部分では、中かっこ内にあるテキストが日付と時刻のデータの形式を記述します。Format で指定された値は以下のように指定します。

  • ファイルの最初と最後の列を、categorical データとして指定

  • 2 列目と 5 列目を、書式設定済みの日付と時刻のデータとして指定

  • 3 列目と 4 列目を、浮動小数点値として指定

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 配列として、2 番目と 5 番目の変数を datetime 配列として、残りの変数を double として指定します。

opts = detectImportOptions('outages.csv');
varNames = opts.VariableNames ; % variable names
varTypes = {'categorical','datetime','double',...   
                'double','datetime','categorical'}; 
opts = setvartype(opts,varNames,varTypes);                      

readtableopts とともに使用してデータをインポートし、最初の 5 行を表示します。

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   

table への新しい変数の追加

table T には、OutageTime および RestorationTime が含まれています。それぞれの停電の持続時間を計算して、このデータを table に追加します。

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

参考

| | | | | |

関連するトピック