Этот пример показывает, как создать 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
datastore
| mapreduce
| tabularTextDatastore
| tall