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