Начало работы с Datastore

Что такое Datastore?

Datastore является объектом для чтения единственного файла или набора файлов или данных. Datastore действует как репозиторий для данных, который имеет ту же структуру и форматирование. Например, каждый файл в datastore должен содержать данные того же типа (такой как числовые или текст) появляющийся в том же порядке, и разделенный тем же разделителем.

Datastore полезен когда:

  • Каждый файл в наборе может быть слишком большим, чтобы уместиться в памяти. Datastore позволяет вам читать и анализировать данные из каждого файла в меньших фрагментах, которые действительно умещаются в памяти.

  • Файлы в наборе имеют произвольные имена. Datastore действует как репозиторий для файлов в одной или нескольких папках. Файлы не требуются, чтобы иметь последовательные имена.

Можно создать datastore на основе типа данных или приложения. Различные типы хранилищ данных содержат свойства, подходящие для типа данных, которые они поддерживают. Например, см. следующую таблицу для списка хранилищ данных MATLAB®. Для полного списка хранилищ данных смотрите, Выбирают Datastore for File Format или Application.

Тип файла или данныхТип хранилища данных
Текстовые файлы, содержащие данные в столбцах, включая файлы CSV.TabularTextDatastore
Файлы изображений, включая форматы, которые поддержаны imread, таким как JPEG и PNG.ImageDatastore
Файлы электронной таблицы с поддерживаемым форматом Excel®, такие как .xlsx.SpreadsheetDatastore
Данные пары "ключ-значение", которые являются входными параметрами к или выходными параметрами mapreduce.KeyValueDatastore
Пользовательские форматы файлов. Требует обеспеченной функции для чтения данных.FileDatastore
Datastore для выгрузки массивов tall.TallDatastore

Создание и считанный из Datastore

Используйте функцию tabularTextDatastore, чтобы создать datastore из файла примера airlinesmall.csv, который содержит информацию об отъезде и прибытии об отдельных полетах. Результатом является объект TabularTextDatastore.

ds = tabularTextDatastore('airlinesmall.csv')
ds = 

  TabularTextDatastore with properties:

                      Files: {
                             ' ...\matlab\toolbox\matlab\demos\airlinesmall.csv'
                             }
               FileEncoding: 'UTF-8'
          ReadVariableNames: true
              VariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more}

  Text Format Properties:
             NumHeaderLines: 0
                  Delimiter: ','
               RowDelimiter: '\r\n'
             TreatAsMissing: ''
               MissingValue: NaN

  Advanced Text Format Properties:
            TextscanFormats: {'%f', '%f', '%f' ... and 26 more}
         ExponentCharacters: 'eEdD'
               CommentStyle: ''
                 Whitespace: ' \b\t'
    MultipleDelimitersAsOne: false

  Properties that control the table returned by preview, read, readall:
      SelectedVariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more}
            SelectedFormats: {'%f', '%f', '%f' ... and 26 more}
                   ReadSize: 20000 rows

После создания datastore можно предварительно просмотреть данные, не имея необходимость загружать все это в память. Можно задать переменные (столбцы) интереса с помощью свойства SelectedVariableNames предварительно просмотреть или только для чтения те переменные.

ds.SelectedVariableNames = {'DepTime','DepDelay'};
preview(ds)
ans = 
    DepTime    DepDelay
    _______    ________
     642       12      
    1021        1      
    2055       20      
    1332       12      
     629       -1      
    1446       63      
     928       -2      
     859       -1      

Можно задать значения в данных, которые представляют отсутствующие значения. В airlinesmall.csv отсутствующие значения представлены NA.

ds.TreatAsMissing = 'NA';

Если все данные в datastore для переменных интереса умещаются в памяти, можно считать его с помощью функции readall.

T = readall(ds);

В противном случае считайте данные в меньших подмножествах, которые действительно умещаются в памяти, с помощью функции read. По умолчанию, read функционируют чтения от TabularTextDatastore 20 000 строк за один раз. Однако можно изменить это значение путем присвоения нового значения свойству ReadSize.

ds.ReadSize = 15000;

Сбросьте datastore к начальному состоянию перед перечитыванием, с помощью функции reset. Путем вызывания функции read в цикле while можно выполнить промежуточные вычисления на каждом подмножестве данных, и затем агрегировать промежуточные результаты в конце. Этот код вычисляет максимальное значение переменной DepDelay.

reset(ds)
X = [];
while hasdata(ds)
      T = read(ds);
      X(end+1) = max(T.DepDelay);
end
maxDelay = max(X)
maxDelay =
        1438

Если данные в каждом отдельном файле умещаются в памяти, можно указать, что каждый вызов read должен считать один полный файл, а не определенное количество строк.

reset(ds)
ds.ReadSize = 'file';
X = [];
while hasdata(ds)
      T = read(ds);
      X(end+1) = max(T.DepDelay);
end
maxDelay = max(X);

В дополнение к чтению подмножеств данных в datastore можно применить карту и уменьшить функции до datastore с помощью mapreduce. Для получения дополнительной информации о MapReduce в MATLAB, смотрите Начало работы с MapReduce.

Смотрите также

| | | | | | |

Похожие темы

Была ли эта тема полезной?