Main Content

데이터저장소 시작하기

데이터저장소란?

데이터저장소는 하나의 파일, 또는 여러 파일이나 데이터의 모음을 읽기 위한 객체입니다. 데이터저장소는 구조와 형식이 같은 데이터에 대한 저장 공간 역할을 합니다. 예를 들어, 데이터저장소의 각 파일에는 같은 유형(예: 숫자형 또는 텍스트)의 데이터가 있어야 하며, 이러한 데이터는 동일한 순서로 나타나고 동일한 구분 기호로 구분됩니다.

데이터저장소는 다음과 같은 경우에 유용합니다.

  • 데이터 모음에 있는 각 파일의 크기가 너무 커서 메모리에 담을 수 없는 경우. 데이터저장소에서는 각 파일의 데이터를 메모리에 맞는 더 작은 크기로 읽고 분석할 수 있습니다.

  • 데이터 모음에 있는 파일의 이름이 무작위인 경우. 데이터저장소는 하나 이상의 폴더에 있는 파일에 대한 저장 공간 역할을 합니다. 파일 이름은 순차적일 필요가 없습니다.

데이터 또는 응용 프로그램의 유형을 기반으로 데이터저장소를 만들 수 있습니다. 각 데이터저장소 유형에는 지원되는 데이터 유형에 맞는 속성이 들어 있습니다. MATLAB® 데이터저장소 목록에 대한 일례는 다음 표를 참조하십시오. 데이터저장소의 전체 목록을 보려면 파일 형식 또는 응용 프로그램에 맞는 데이터저장소 선택하기 항목을 참조하십시오.

파일 또는 데이터 유형데이터저장소 유형
열 방향 데이터를 포함하는 텍스트 파일(예: CSV 파일).TabularTextDatastore
imread에서 지원되는 형식을 포함하는 이미지 파일(예: JPEG, PNG).ImageDatastore
지원되는 Excel® 형식의 스프레드시트 파일(예: .xlsx).SpreadsheetDatastore
mapreduce의 입력값이거나 출력값인 키-값 쌍 데이터.KeyValueDatastore
열 방향 데이터를 포함하는 Parquet 파일.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 함수를 사용하여 데이터저장소를 초기 상태로 재설정하십시오. while 루프 내에서 read 함수를 호출하여, 데이터의 각 부분에 대해 중간 계산을 수행한 후 이 중간 결과를 마지막에 집계할 수 있습니다. 다음 코드는 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 함수를 사용하여 데이터저장소에 map 함수와 reduce 함수를 적용하거나 tall을 사용하여 tall형 배열을 생성할 수 있습니다. 자세한 내용은 MapReduce 시작하기 항목과 메모리에 담을 수 없는 큰 데이터를 위한 tall형 배열 항목을 참조하십시오.

참고 항목

| | | | | |

관련 항목