メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

テキスト ファイルから table へのデータのインポート

テキスト ファイルに表形式データが含まれる場合、readtable 関数を使用してデータを table としてインポートできます。table は列方向の変数で構成され、それぞれに同じ型のデータが含まれます。table 内の変数は、データ型とサイズが異なってもかまいませんが、各変数の行数は同じでなければなりません。

readtable は入力ファイルの要素を検出し、入力ファイルの内容をインポートする最適な方法を判別します。readtable は、最初の 250 行の空でないデータの区切り記号、ヘッダー行の数、変数の数、変数の型、およびメタデータに基づいてデータの形式を解析します。名前と値の引数またはインポート オプション オブジェクトを使用して、インポートの各側面をカスタマイズできます。

テキスト ファイルの table としての読み取り

readtable 関数を使用し、テキスト ファイルから table に表形式データをインポートできます。たとえば、サンプル ファイル outages.csv には、コンマで区切られた列方向データが含まれています。

outages_screenshot.png

outages.csv から table を作成します。作成された table にはファイルの列ごとに 1 つの変数が含まれています。readtable では、ファイルの最初の行のエントリが変数名として使用されます。インデックス付けを使用して、table の最初の 3 行と最初の 5 列を表示します。

T = readtable("outages.csv");
T(1:3,1:6)
ans=3×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'}

区切り記号の指定

既定では、readtable はファイル区切り記号を検出し、それを使用してデータを table 要素に分割します。readtable は、最初の 250 行の空でないデータ内の変数の数と列におけるデータ型の一貫性を使用して区切り記号を判別します。たとえば、airlinesmall.csv にはコンマ区切りのデータが含まれているため、readtable は区切り記号を "," として検出し、それに応じてデータを分割します。

T = readtable("airlinesmall.csv");

意図した区切り記号が readtable によって選択されない場合は、名前と値の引数 Delimiter を使用して区切り記号を指定できます。

T = readtable("airlinesmall.csv",Delimiter=",");

列ヘッダーを含むデータの読み取り

既定では、readtable はファイルに変数名として使用するヘッダーの行があるかどうかを判別します。たとえば、headersAndMissing.txt ファイルの最初の 2 行には変数名およびヘッダーが含まれています。readtable は最初の変数名の行を保持し、2 行目のヘッダーの行を破棄します。

T = readtable("headersAndMissing.txt");

名前と値の引数 NumHeaderLines を使用して、ファイルの先頭でスキップするヘッダー行の数を指定できます。たとえば、データを読み取る前にスキップするヘッダー行として最初の行を指定します。

T = readtable("headersAndMissing.txt",NumHeaderLines=1)
T=5×6 table
      string        string_1     int    int_1    int_2    boolean
    ___________    __________    ___    _____    _____    _______

    {'Wu'     }    {'M'     }     38     71       176        1   
    {'Johnson'}    {'M'     }     43     69       163        0   
    {'Sanchez'}    {'F'     }     38     64       131        0   
    {'Brown'  }    {'F'     }    NaN     67       133        0   
    {'Picard' }    {0×0 char}    NaN     64       119        0   

列ヘッダーのないデータの読み取り

ファイルに列ヘッダーがない場合、readtableVar1Var2、...、VarN の形式で既定の変数名を割り当てます。たとえば、mySpaceDelimTable.txt の最初の行に列名がないため、readtable は既定の変数名 Var1Var5 を割り当てます。table の最初の 3 行を表示します。

T = readtable("mySpaceDelimTable.txt");
head(T,3)
    Var1     Var2    Var3     Var4       Var5   
    _____    ____    ____    ______    _________

    {'M'}     45      45     {'NY'}    {'true' }
    {'F'}     41      32     {'CA'}    {'false'}
    {'M'}     40      34     {'MA'}    {'false'}

ファイルに列ヘッダーがあってもこれを読み取らないようにするには、名前と値の引数 ReadVariableNamesfalse として指定します。

T = readtable("headersAndMissing.txt",ReadVariableNames=false);

欠損データの埋め込み

ファイルに欠損データが含まれている場合、readtable は適切な missing 値でデータのギャップを埋めます。ギャップに空白文字のみが含まれている場合、または変数が見つかる前に行が終了した場合、ギャップは欠損データとみなされます。たとえば、ファイル headersAndMissing.txt では、最後の 2 行にギャップがあり、その前の行にはデータ値があります。既定では、readtable はこれらのギャップを NaN などの適切な欠損値で埋めます。

T = readtable("headersAndMissing.txt");

readtable が欠損データを処理する方法を調整する場合は、名前と値の引数 MissingRule を使用します。たとえば、欠損データが含まれている行を省略するには、MissingRule を "omitrow"" として指定します。

T = readtable("headersAndMissing.txt",MissingRule="omitrow");

日付ロケールの変換

ファイルにシステムの日付ロケールとは異なる日付ロケールの日付値が含まれている場合、readtable は、希望する日付ロケールを使用してデータ値を変換してインポートできます。たとえば、指定した文字エンコード スキームを使用してファイルを読み取り、米国英語ロケールを使用して日付値を解釈して、outages.csv から table を作成します。名前と値の引数 Encoding を使用して、ファイルの文字エンコード スキームを指定します。名前と値の引数 DateLocale を使用して、入力日付の形式とロケールを指定します。table の最初の 3 行を表示します。

T = readtable("outages.csv", ...
    Encoding="ISO-8859-15", ...
    DateLocale="en_US");
head(T,3)
       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'}

16 進数と 2 進数の読み取り

ファイルに 16 進数または 2 進数のリテラルが含まれている場合、readtable はそれらを読み取り、table に数値変数として保存できます。readtable 関数は、それぞれ接頭辞 0x および 0b が付いている 16 進数および 2 進数を自動的に読み取ります。数値は整数データ型を使用して保存されます。接頭辞が付いていない場合でも、インポート オプションを使用して該当する数値を読み取ることができます。

たとえば、hexAndBinary.txt ファイルから table を作成します。readtable は、接頭辞 0x および 0b が付いている数値を検出し、整数として保存します。

T = readtable("hexAndBinary.txt");

既定では、readtable は 16 進数および 2 進数のリテラルをインポートするために、可能な限り小さい符号なし整数クラスを使用します。

16 進数と 2 進数からインポートされた数値を保存するデータ型を指定するには、名前と値の引数 HexType および BinaryType を使用します。たとえば、値を符号付き 32 ビット整数として保存します。

T = readtable("hexAndBinary.txt",HexType="int32",BinaryType="int32");

インポート オプションを使用したインポートの構成

インポートをさらに構成するには、インポート オプション オブジェクトを使用して、readtable がファイルを解釈する方法を制御します。インポート オプション オブジェクトは、名前と値の引数より詳細に制御でき、パフォーマンスが優れており、ファイル インポート構成を再利用できます。

インポート オプション オブジェクトには、入力ファイルについて検出された情報を保存するプロパティが含まれています。特定の変数を指定することも、ドット表記を使用してすべての変数を指定することもできます。たとえば、outages.csv からインポート オプション オブジェクトを作成します。インポート オプション オブジェクトの VariableNames プロパティを表示します。ここには検出された変数名を格納しています。

opts = detectImportOptions("outages.csv");
opts.VariableNames
ans = 1×6 cell
    {'Region'}    {'OutageTime'}    {'Loss'}    {'Customers'}    {'RestorationTime'}    {'Cause'}

特定の変数のデータ型を変更するには、setvartype 関数を使用します。たとえば、Region 変数のデータ型を string に変更します。

opts = setvartype(opts,"Region","string");

特定の変数のオプションを設定するには、setvaropts 関数を使用します。たとえば、RestorationTime 変数に空のフィールドがある場合にエラーを生成します。

opts = setvaropts(opts,"RestorationTime",EmptyFieldRule="error");

インポートする変数のサブセットを指定するには、SelectedVariableNames プロパティを使用します。たとえば、Region および RestorationTime のデータのみをインポートします。

opts.SelectedVariableNames = ["Region","RestorationTime"];

インポート オプション オブジェクトの構成が完了したら、readtable と共にそのオブジェクトを使用してファイルをインポートします。

T = readtable("outages.csv",opts);
head(T,3)
      Region       RestorationTime 
    ___________    ________________

    "SouthWest"    2002-02-07 16:50
    "SouthEast"                 NaT
    "SouthEast"    2003-02-17 08:14

インポート オプション オブジェクトの使用の詳細については、detectImportOptionsを参照してください。

参考

| | | | | |

トピック