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

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

Создание Datastore

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

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

datastore возвращает TabularTextDatastore. Функция datastore автоматически определяет соответствующий тип datastore, чтобы создать на основе расширения файла.

Можно изменить свойства 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

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

| | |

Похожие темы