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

В этом примере показано, как создать 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 20 000 строк за один раз. Считать различное количество строк в каждом вызове 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

Смотрите также

| |

Похожие темы