В этом примере показано, как создать хранилище данных для большого текстового файла, содержащего табличные данные, а затем считывать и обрабатывать данные по одному блоку или по одному файлу за один раз.
Создание хранилища данных из файла образца airlinesmall.csv с использованием tabularTextDatastore функция. При создании хранилища данных можно указать, что текст, NA, в данных рассматривается как отсутствующие данные.
ds = tabularTextDatastore('airlinesmall.csv','TreatAsMissing','NA');
Можно изменить свойства хранилища данных, изменив его свойства. Изменение 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
По умолчанию 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
Сбросьте хранилище данных, чтобы разрешить повторное чтение данных.
reset(ds)
Хранилище данных может содержать несколько файлов, каждый из которых имеет разное количество строк. Вы можете прочитать из хранилища данных один полный файл за один раз, установив ReadSize свойство для 'file'.
ds.ReadSize = 'file';При изменении значения ReadSize из числа в 'file' или наоборот, MATLAB сбрасывает хранилище данных.
Читать из 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
mapreduce | tabularTextDatastore | tall