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

Что такое Datastore?

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

datastore полезен, когда:

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

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

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

Тип файла или данныхТип Datastore
Текстовые файлы, содержащие ориентированные на столбцы данные, включая файлы CSV.TabularTextDatastore
Файлы изображений, включая форматы, которые поддерживаются imread такие как JPEG и PNG.ImageDatastore
Файлы электронной таблицы с поддерживаемым Excel® формат, такой как .xlsx.SpreadsheetDatastore
Данные пары "ключ-значение", которые являются входами или выходами mapreduce.KeyValueDatastore
Файлы Parquet, содержащие ориентированные на столбцы данные.ParquetDatastore
Пользовательские форматы файлов. Требуется функция для чтения данных.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'
                             }
                    Folders: {
                             ' ...\matlab\toolbox\matlab\demos'
                             }
               FileEncoding: 'UTF-8'
   AlternateFileSystemRoots: {}
      PreserveVariableNames: false
          ReadVariableNames: true
              VariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more}
             DatetimeLocale: en_US

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

  Advanced Text Format Properties:
            TextscanFormats: {'%f', '%f', '%f' ... and 26 more}
                   TextType: 'char'
         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
                 OutputType: 'table'
                   RowTimes: []

  Write-specific Properties:
     SupportedOutputFormats: ["txt"    "csv"    "xlsx"    "xls"    "parquet"    "parq"]
        DefaultOutputFormat: "txt"

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

ds.SelectedVariableNames = {'DepTime','DepDelay'};
preview(ds)
ans =

  8×2 table

    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 можно применить функции map и reduce к datastore используя mapreduce или создайте длинный массив с помощью tall. Для получения дополнительной информации смотрите Начало работы с MapReduce и Длинные Массивы for Данная , Которая Не Помещаются в Память,.

См. также

| | | | | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте