このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
テキスト ファイルから table へのデータのインポート
テキスト ファイルに表形式データが含まれる場合、readtable
関数を使用してデータを table としてインポートできます。table は列方向の変数で構成され、それぞれに同じ型のデータが含まれます。table 内の変数は、データ型とサイズが異なってもかまいませんが、各変数の行数は同じでなければなりません。
readtable
は入力ファイルの要素を検出し、入力ファイルの内容をインポートする最適な方法を判別します。readtable
は、最初の 250 行の空でないデータの区切り記号、ヘッダー行の数、変数の数、変数の型、およびメタデータに基づいてデータの形式を解析します。名前と値の引数またはインポート オプション オブジェクトを使用して、インポートの各側面をカスタマイズできます。
テキスト ファイルの table としての読み取り
readtable
関数を使用し、テキスト ファイルから table に表形式データをインポートできます。たとえば、サンプル ファイル outages.csv
には、コンマで区切られた列方向データが含まれています。
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
列ヘッダーのないデータの読み取り
ファイルに列ヘッダーがない場合、readtable
は Var1
、Var2
、...、VarN
の形式で既定の変数名を割り当てます。たとえば、mySpaceDelimTable.txt
の最初の行に列名がないため、readtable
は既定の変数名 Var1
~ Var5
を割り当てます。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'}
ファイルに列ヘッダーがあってもこれを読み取らないようにするには、名前と値の引数 ReadVariableNames
を false
として指定します。
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
を参照してください。
参考
readtimetable
| readtable
| detectImportOptions
| setvaropts
| setvartype
| preview
| head