ドキュメンテーション

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

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

この例では、関数 readtable を使用して、混在するデータをテキスト ファイルからテーブルにインポートする方法を示します。次に、テーブル内のデータの変更および解析の方法を示します。

サンプル ファイル概要

サンプル ファイル outages.csv は、米国における電力会社の停電を表すデータを含んでいます。このファイルの最初の数行を以下に示します。

Region,OutageTime,Loss,Customers,RestorationTime,Cause
SouthWest,01/20/2002 11:49,672,2902379,01/24/2002 21:58,winter storm
SouthEast,01/30/2002 01:18,796,336436,02/04/2002 11:20,winter storm
SouthEast,02/03/2004 21:17,264.9,107083,02/20/2004 03:37,winter storm
West,06/19/2002 13:39,391.4,378990,06/19/2002 14:27,equipment fault

このファイルには 6 つの列があります。ファイルの最初の行は、データの列タイトルをリストしています。これらは列タイトルと、その列のデータの説明です。

  • Region: 5 つの地域のうち、各停電が発生した 1 つの地域を表すテキスト値

  • OutageTime: 停電が開始した日付と時間 (month/day/year hour:minute の形式)

  • Loss: 停電の合計電力損失を示す数値

  • Customers: 影響を受けた顧客数を示す整数値

  • RestorationTime: 電力が回復した日付と時間 (month/day/year hour:minute の形式)

  • Cause: 停電の原因のカテゴリ (テキストで提供)

データ フィールドの形式の指定

テキスト ファイルのデータを記述する書式指定子の文字列を作成します。次に、書式指定子を関数 readtable に渡してデータをインポートします。outages.csv にはデータ列が 6 つ含まれるため、浮動小数点数に対しては '%f'、カテゴリ値に対しては '%C'、日付と時刻の値に対しては '%D' など、6 つの書式指定子の文字列を作成します。

formatSpec = '%C%{MM/dd/yyyy HH:mm}D%f%f%{MM/dd/yyyy HH:mm}D%C';

formatSpec 文字列は、readtable に対して、ファイルの最初と最後の列をカテゴリカル データとして、2 番目と 5 番目の列を書式設定された日付と時刻のデータとして、3 番目と 4 番目の列を浮動小数点値として読み取ることを指定します。%{MM/dd/yyyy HH:mm}D 指定子に関しては、中かっこの間にあるテキストが日付と時刻のデータの形式を記述します。

テキスト ファイルの読み取り

readtable を呼び出してファイルを読み取ります。Delimiter の名前と値のペアの引数を使用して、区切り記号を指定します。既定の区切り記号はコンマです。Format の名前と値のペアの引数を formatSpec 値とともに使用して、ファイル内のデータ フィールドの形式を記述します。

T = readtable('outages.csv','Delimiter',',', ...
    'Format',formatSpec);

readtable は、停電データを含むテーブルを返します。

テーブルの最初の 5 行と最初の 4 つの変数を表示します。

T(1:5,1:4)
ans = 

     Region         OutageTime        Loss     Customers 
    _________    ________________    ______    __________

    SouthWest    02/01/2002 12:18    458.98    1.8202e+06
    SouthEast    01/23/2003 00:49    530.14    2.1204e+05
    SouthEast    02/07/2003 21:15     289.4    1.4294e+05
    West         04/06/2004 05:44    434.81    3.4037e+05
    MidWest      03/16/2002 06:18    186.44    2.1275e+05

テーブルに含まれるデータ型は混在しています。最初と最後の変数は categorical 配列、2 番目と 5 番目の変数は datetime 配列、残りの変数は数値データです。

インポート データの変更

T の datetime 列の形式を変更します。

T.OutageTime.Format = 'dd-MMM-yyyy HH:mm:ss';
T.RestorationTime.Format = 'dd-MMM-yyyy HH:mm:ss';

テーブルの最初の 5 行と最初の 4 つの変数を表示します。

T(1:5,1:4)
ans = 

     Region           OutageTime          Loss     Customers 
    _________    ____________________    ______    __________

    SouthWest    01-Feb-2002 12:18:00    458.98    1.8202e+06
    SouthEast    23-Jan-2003 00:49:00    530.14    2.1204e+05
    SouthEast    07-Feb-2003 21:15:00     289.4    1.4294e+05
    West         06-Apr-2004 05:44:00    434.81    3.4037e+05
    MidWest      16-Mar-2002 06:18:00    186.44    2.1275e+05

インポート データへの追加

各停電の期間を計算して、そのデータをテーブルに追加します。

T.Duration = T.RestorationTime - T.OutageTime;

TDuration 列のデータの最初の 5 行を表示します。

T.Duration(1:5)
ans = 

   148:32:00
         NaN
   226:59:00
    00:26:00
    65:05:00

インポート データの並べ替え

OutageTime 変数でテーブルを並べ替えます。次に、並べ替えたテーブルの最初の 5 行と最初の 4 つの変数を表示します。

T = sortrows(T,'OutageTime','ascend');
T(1:5,1:4)
ans = 

     Region           OutageTime          Loss     Customers 
    _________    ____________________    ______    __________

    SouthWest    01-Feb-2002 12:18:00    458.98    1.8202e+06
    MidWest      05-Mar-2002 17:53:00    96.563    2.8666e+05
    MidWest      16-Mar-2002 06:18:00    186.44    2.1275e+05
    MidWest      26-Mar-2002 01:59:00    388.04    5.6422e+05
    MidWest      20-Apr-2002 16:46:00     23141           NaN

参考

詳細

この情報は役に立ちましたか?