MATLAB でデータをインポートする方法の制御
readtable などのインポート関数を使用して、データを MATLAB® にインポートします。MATLAB にデータのインポート方法を決定させることも、MATLAB によるデータのインポート方法を制御するパラメーターを指定することもできます。
インポート関数は、区切り記号、ヘッダー行の数、変数の数、変数の型、およびメタデータに基づいてデータの形式を調べ、入力ファイルの内容をインポートする最適な方法を検出します。データが増えるほどパターンが認識しやすくなるため、データ セットのサイズが大きいほど、形式検出の正確性が向上します。テキスト ファイルは、構造が最も単純であることが多いため、この解析に最適です。
MATLAB でデータをインポートする方法を制御するには、以下のような複数の方法があります。
最も簡単なオプションとして、インポート関数で名前と値の引数を指定できます。たとえば、名前と値の引数
MissingRuleを指定して、データ内のギャップに対処する方法を指定できます。インポート ツールでもこのレベルの制御が可能です。詳細については、インポート ツールを参照してください。あるいは、インポート関数でインポート オプション オブジェクトを指定することもできます。このオプションは、同様の形式の複数のファイルをインポートしたり、変数レベルでカスタマイズしたり、自動形式検出を回避したりする場合に役立ちます。
このトピックの例では、readtable を使用してデータを table としてインポートします。行列や cell 配列などの他の形式へのデータのインポートの詳細については、テキスト ファイルのインポートおよびスプレッドシートのインポートを参照してください。
ファイルから MATLAB へのデータのインポート
readtable などのインポート関数を使用してファイルからデータをインポートできます。たとえば、サンプル ファイル outages_flawed.csv には列方向データが含まれています。

このサンプル ファイルでは、2 行目と 4 行目のデータにギャップが含まれており、3 行目のデータにはインポート時に変換できない日付値が含まれています。このデータ セットは合計 6 行のみと小さいサイズであるため、異常があると形式検出に大きな影響が出ます。
インポート関数 readtable を使用して outages_flawed.csv から table を作成します。インポート関数は、データ内のギャップおよび変換できない日付値を認識し、適切な欠損値で埋める既定のアクションを実行します。
T = readtable("outages_flawed.csv")T=5×6 table
Region OutageTime Loss Customers RestorationTime Cause
_____________ ________________ _______________ _______________ ________________ ___________________
{'SouthWest'} 2002-02-01 12:18 {'458,9772218'} {'1820159,482'} 2002-02-07 16:50 {'winter storm' }
{'SouthEast'} 2003-01-23 00:49 {'530,1399497'} {'212035,3001'} NaT {'winter storm' }
{'SouthEast'} NaT {'289,4035493'} {'142938,6282'} 2003-02-17 08:14 {'winter storm' }
{'West' } 2004-04-06 05:44 {'434,8053524'} {'340371,0338'} NaT {'equipment fault'}
{'MidWest' } 2002-03-16 06:18 {'186,4367788'} {'212754,055' } 2002-03-18 23:23 {'severe storm' }
MATLAB でデータを検出およびインポートする方法の制御
インポート関数でファイルを解析する方法を制御するには、名前と値の引数を使用します。これらの引数により、table レベルのカスタマイズを使用してインポートをより詳細に制御できます。名前と値の引数のリストについては、インポート関数に関するドキュメンテーションを参照してください。このレベルの制御は、大半のワークフローに適しています。
たとえば、名前と値の引数を使用して、table レベルでサンプル ファイルのインポートを次のようにカスタマイズします。
区切り記号を
"|"に設定します。小数点の区切りを
","に設定します。インポート エラーの原因となるデータを含む行を省略します。
欠損データが含まれている行を省略します。
T = readtable("outages_flawed.csv",Delimiter="|",DecimalSeparator=",", ... ImportErrorRule="omitrow",MissingRule="omitvar")
T=4×5 table
Region OutageTime Loss Customers Cause
_____________ ________________ ______ __________ ___________________
{'SouthWest'} 2002-02-01 12:18 458.98 1.8202e+06 {'winter storm' }
{'SouthEast'} 2003-01-23 00:49 530.14 2.1204e+05 {'winter storm' }
{'West' } 2004-04-06 05:44 434.81 3.4037e+05 {'equipment fault'}
{'MidWest' } 2002-03-16 06:18 186.44 2.1275e+05 {'severe storm' }
複数のファイルからのデータのインポートと個々の変数の制御
インポートするファイルが複数あり、ファイルの形式が類似している場合は、インポート オプション オブジェクトを作成することで、すべてのファイルで同じインポート構成を再利用できます。detectImportOptions関数を使用して、いずれかのファイルの形式に基づいてインポート オプション オブジェクトを設定し、そのオブジェクトを使用してすべてのファイルのインポート方法を指定できます。
名前と値の引数を detectImportOptions に渡すことで、関数がデータの形式を検出できるようになり、table レベルでインポート オプション オブジェクトをカスタマイズできます。getvaropts、setvartype、および setvaropts 関数を使用して、変数レベルでインポート オプション オブジェクトをさらにカスタマイズできます。
たとえば、table レベルのカスタマイズを含むインポート オプション オブジェクトを次のように作成します。
区切り記号を
"|"に設定します。小数点の区切りを
","に設定します。インポート エラーの原因となるデータを含む行を省略します。
欠損データが含まれている行を省略します。
opts = detectImportOptions("outages_flawed.csv",Delimiter="|", ... DecimalSeparator=",",ImportErrorRule="omitrow",MissingRule="omitrow");
ここで、getvaropts、setvartype、および setvaropts 関数を使用して、変数レベルのカスタマイズでインポート オプション オブジェクトを微調整します。
Region、OutageTime、および Loss という名前の変数の現在のオプションを表示します。
getvaropts(opts,["Region","OutageTime","Loss"])
ans =
1×3 heterogeneous VariableImportOptions (TextVariableImportOptions, DatetimeVariableImportOptions, NumericVariableImportOptions) array with properties:
Name
Type
FillValue
TreatAsMissing
QuoteRule
Prefixes
Suffixes
EmptyFieldRule
変数レベルのカスタマイズを次のように指定します。
Region、OutageTime、およびLoss変数のデータ型をそれぞれstring、datetime、およびsingleに変更します。Cause変数では、テキストの先頭の空白をトリミングします。Customers変数では、0またはNAを含むフィールドを欠損として扱います。
opts = setvartype(opts,["Region","OutageTime","Loss"], ... ["string","datetime","single"]); opts = setvaropts(opts,"Cause",WhitespaceRule="trimleading"); opts = setvaropts(opts,"Customers",TreatAsMissing=["0","NA"]);
カスタム オプションを使用して、outages_flawed.csv および形式が類似しているファイル outages_flawed2.csv をインポートします。
T = readtable("outages_flawed.csv",opts); T2 = readtable("outages_flawed2.csv",opts);
形式検出なしでの複数のファイルからのデータのインポート
入力ファイルを使用してインポート オプション オブジェクトを作成する代わりに、入力ファイルなしでインポート オプション オブジェクトを作成することもできます。入力ファイルのタイプに基づいて、特定のタイプのインポート オプション オブジェクトを作成する関数 (delimitedTextImportOptions、fixedWidthImportOptions、xmlImportOptions、htmlImportOptions、または wordDocumentImportOptions) を選択します。作成時に名前と値の引数を使用するか、作成後にプロパティを調整することで、table レベルでインポート オプション オブジェクトをカスタマイズできます。変数レベルのカスタマイズの場合は、getvaropts、setvartype、および setvaropts 関数を使用します。
たとえば、形式と構造が類似した 2 つのサンプル ファイルをインポートします。6 つの変数を含むデータの delimitedTextImportOptions オブジェクトを作成し、区切り記号を "|" に設定して、インポート時にエラーの原因になる行を省略します。
opts = delimitedTextImportOptions(NumVariables=6, ... Delimiter="|",ImportErrorRule="omitrow");
プロパティを調整して、table レベルでのインポート オプション オブジェクトのカスタマイズを次のように続行します。
欠損データが含まれている行を省略します。
データ行が 2 行目から始まるように指定します。
変数名が 1 行目にあることを指定します。
スペースや非 ASCII 文字を含む変数名を保持します。
opts.MissingRule = "omitrow"; opts.DataLines = 2; opts.VariableNamesLine = 1; opts.VariableNamingRule = "preserve";
getvaropts、setvartype、および setvaropts 関数を使用して、変数レベルでインポート オプションを次のようにさらにカスタマイズします。
6 つの変数のデータ型を設定します。
3 番目と 4 番目の変数の小数点の区切りを
","に設定します。
opts = setvartype(opts,1:6, ... ["string" "datetime" "single" "single" "datetime" "categorical"]); opts = setvaropts(opts,3:4,DecimalSeparator=",");
カスタム オプションを使用して、outages_flawed.csv および形式が類似しているファイル outages_flawed2.csv をインポートします。
T = readtable("outages_flawed.csv",opts); T2 = readtable("outages_flawed2.csv",opts);
参考
detectImportOptions | getvaropts | setvaropts | setvartype | readtable | SpreadsheetImportOptions | DelimitedTextImportOptions | readmatrix | readcell | readvars