ドキュメンテーション

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

大規模な表形式テキスト ファイルの読み取りと解析

次の例では、表形式データを含む大規模なテキスト ファイル用のデータ ストアを作成し、次にデータを 1 チャンクずつまたは 1 ファイルずつ読み取って処理する方法を説明します。

データ ストアの作成

サンプル ファイル airlinesmall.csv から、関数 datastore を使用してデータ ストアを作成します。データ ストアを作成するときに、データ内のテキスト NA を欠損データとして扱うことを指定できます。

ds = datastore('airlinesmall.csv','TreatAsMissing','NA');

datastoreTabularTextDatastore を返します。関数 datastore は、ファイル拡張子に基づいて、作成するデータ ストアの適切なタイプを自動的に判断します。

データ ストアのプロパティを変更することで、そのプロパティを修正できます。MissingValue プロパティを変更して、欠損値を 0 として扱うことを指定します。

ds.MissingValue = 0;

この例では、到着遅延時間の変数 ArrDelay を目的の変数として選択します。

ds.SelectedVariableNames = 'ArrDelay';

関数 preview を使用してデータをプレビューします。この関数は、データ ストアの状態には影響しません。

data = preview(ds)
data=8×1 table
    ArrDelay
    ________

        8   
        8   
       21   
       13   
        4   
       59   
        3   
       11   

データのサブセットの読み取り

既定では、readTabularTextDatastore から一度に 20,000 行ずつ読み取ります。read の呼び出しごとに読み取る行数を変えるには、dsReadSize プロパティを変更します。

ds.ReadSize = 15000;

関数 readwhile ループ内で使用して、ds からデータのサブセットを読み取ります。ループは hasdata(ds)false を返すまで実行されます。

sums = [];
counts = [];
while hasdata(ds)
    T = read(ds);
    
    sums(end+1) = sum(T.ArrDelay);
    counts(end+1) = length(T.ArrDelay);
end

平均到着遅延時間の計算

avgArrivalDelay = sum(sums)/sum(counts)
avgArrivalDelay = 6.9670

データを再度読み取れるように、データ ストアをリセットします。

reset(ds)

一度に 1 ファイルずつの読み取り

1 つのデータ ストアに、それぞれ行数が異なる複数のファイルが含まれる場合があります。データ ストアから一度に 1 つずつファイル全体を読み取るには、ReadSize プロパティを 'file' に設定します。

ds.ReadSize = 'file';

ReadSize の値を数値から 'file' に変更した場合、あるいはその逆に変更した場合、MATLAB ではデータ ストアがリセットされます。

前と同様、while ループ内で関数 read を使用して ds から読み取り、平均到着遅延時間を計算します。

sums = [];
counts = [];
while hasdata(ds)
    T = read(ds);
    
    sums(end+1) = sum(T.ArrDelay);
    counts(end+1) = length(T.ArrDelay);
end
avgArrivalDelay = sum(sums)/sum(counts)
avgArrivalDelay = 6.9670

参考

| | |

関連するトピック