В этом примере показано, как создать 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
mapreduce | tabularTextDatastore | tall