exponenta event banner

Начало работы с хранилищем данных

Что такое хранилище данных?

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

Хранилище данных полезно в следующих случаях:

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

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

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

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

Создание и чтение из хранилища данных

Используйте tabularTextDatastore создание хранилища данных из файла образца 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"

После создания хранилища данных можно выполнить предварительный просмотр данных без необходимости их загрузки в память. Можно указать переменные (столбцы), представляющие интерес, с помощью 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';

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

T = readall(ds);

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

ds.ReadSize = 15000;

Сбросьте хранилище данных в исходное состояние перед повторным чтением, используя 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);

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

См. также

| | | | | |

Связанные темы