이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

데이터저장소 시작하기

데이터저장소란?

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

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

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

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

다음 표에 나온 데이터 유형을 위한 데이터저장소를 만들 수 있습니다. 데이터 유형마다 지원되는 데이터저장소 유형이 다릅니다. 각 데이터저장소 유형에는 지원되는 데이터 유형에 맞는 속성이 들어 있습니다.

파일 또는 데이터 유형데이터저장소 유형
열 방향 데이터를 포함하는 텍스트 파일(예: CVS 파일)TabularTextDatastore
imread에서 지원되는 형식을 포함하는 이미지 파일(예: JPEG, PNG)ImageDatastore
지원되는 Excel® 형식(예: .xlsx)의 스프레드시트 파일SpreadsheetDatastore
mapreduce의 입력값이거나 출력값인 키-값 쌍 데이터KeyValueDatastore
사용자 지정 파일 형식. 데이터를 읽으려면 제공된 함수가 필요합니다.FileDatastore
tall 배열의 검사 지점 생성을 위한 데이터저장소.TallDatastore
관계형 데이터베이스의 데이터 모음. Database Toolbox™가 필요합니다.DatabaseDatastore
Simulink® 모델에서 사용하는 시뮬레이션 입력 데이터와 출력 데이터 SimulationDatastore
MDF 파일 모음의 데이터저장소(Vehicle Network Toolbox™의 경우)MDFDatastore
MDF 파일 모음의 데이터저장소(Powertrain Blockset™의 경우)MDFDatastore
훈련 이미지를 전처리하기 위한 데이터저장소. Neural Network Toolbox™가 필요합니다. augmentedImageDatastore
이미지의 잡음을 제거하는 심층 신경망을 훈련시키기 위한 데이터저장소. Image Processing Toolbox™와 Neural Network Toolbox가 필요합니다.denoisingImageDatastore
픽셀 레이블 데이터를 위한 데이터저장소. Computer Vision System Toolbox™가 필요합니다.pixelLabelDatastore
의미론적 분할 네트워크를 위한 데이터저장소. Computer Vision System Toolbox가 필요합니다. pixelLabelImageDatastore
시뮬레이션 앙상블 데이터를 관리하기 위한 데이터저장소. Predictive Maintenance Toolbox™가 필요합니다.simulationEnsembleDatastore
사용자 지정 파일 형식의 앙상블 데이터를 관리하기 위한 데이터저장소. Predictive Maintenance Toolbox가 필요합니다.fileEnsembleDatastore

데이터저장소를 만들고 데이터저장소에서 읽어오기

tabularTextDatastore 함수를 사용하여 각 항공편의 출발/도착 정보가 들어 있는 샘플 파일 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

데이터저장소를 만든 후에는 데이터를 전부 메모리에 불러오지 않고도 데이터를 미리 볼 수 있습니다. 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';

원하는 변수에 대한 데이터저장소의 모든 데이터가 메모리에 담기면 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 함수를 적용할 수 있습니다. MATLAB®의 MapReduce에 대한 자세한 내용은 MapReduce 시작하기 항목을 참조하십시오.

참고 항목

| | | | | | |

관련 항목