Чтение и анализ большого табличного текстового файла

В этом примере показано, как создать datastore для большого текстового файла, содержащего табличные данные, а затем считать и обрабатывать данные по одному блоку за раз или по одному файлу за раз.

Создайте Datastore

Создайте datastore из файла образца airlinesmall.csv использование tabularTextDatastore функция. Когда вы создаете datastore, можно задать, что текст, NA, в данных рассматривается как отсутствующие данные.

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

Можно изменить свойства datastore путем изменения его свойств. Измените MissingValue свойство, указывающее, что отсутствующие значения считаются 0.

ds.MissingValue = 0;

В этом примере выберите переменную задержки прибытия ArrDelay, как переменная интереса.

ds.SelectedVariableNames = 'ArrDelay';

Предварительный просмотр данных с помощью preview функция. Эта функция не влияет на состояние datastore.

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

        8   
        8   
       21   
       13   
        4   
       59   
        3   
       11   

Чтение подмножеств данных

По умолчанию read читается из TabularTextDatastore 20000 строк за раз. Чтение различного количества строк при каждом вызове в read, измените ReadSize свойство ds.

ds.ReadSize = 15000;

Считайте подмножества данных из ds использование read функция в while цикл. Цикл выполняется до 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

Сбросьте datastore, чтобы разрешить повторное чтение данных.

reset(ds)

Чтение одного файла за раз

datastore может содержать несколько файлов с различным количеством строк. Можно считать из datastore по одному полному файлу за раз, установив ReadSize свойство к 'file'.

ds.ReadSize = 'file';

Когда вы меняете значение ReadSize от числа до 'file' или наоборот, MATLAB сбрасывает datastore.

Чтение из ds использование read функция в while цикл, как и прежде, и вычислите среднюю задержку прибытия.

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

См. также

| |

Похожие темы