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