주요 콘텐츠

테이블 형식의 대용량 텍스트 파일 읽어오기 및 분석하기

테이블 형식의 데이터가 포함된 대용량 텍스트 파일을 위한 데이터저장소를 생성한 다음, 한 번에 데이터 블록 하나씩 또는 파일 하나씩을 읽어오고 처리합니다.

데이터저장소 만들기

tabularTextDatastore 함수를 사용하여 샘플 파일 airlinesmall.csv에서 데이터저장소를 만듭니다. 데이터저장소를 만들 때, 데이터에 있는 텍스트인 NA를 누락된 데이터로 처리하도록 지정할 수 있습니다.

ds = tabularTextDatastore('airlinesmall.csv','TreatAsMissing','NA');

데이터저장소의 속성은 속성값을 변경하여 수정할 수 있습니다. MissingValue 속성을 수정하여 누락값이 0으로 처리되도록 지정합니다.

ds.MissingValue = 0;

이 예제에서는 도착 지연 시간에 대한 변수 ArrDelay를 관심 변수로 선택합니다.

ds.SelectedVariableNames = 'ArrDelay';

preview 함수를 사용하여 데이터를 미리 봅니다. 이 함수를 사용해도 데이터저장소의 상태에 영향을 주지 않습니다.

data = preview(ds)
data=8×1 table
    ArrDelay
    ________

        8   
        8   
       21   
       13   
        4   
       59   
        3   
       11   

데이터 일부 읽어오기

기본적으로, readTabularTextDatastore에서 한 번에 20,000개 행을 읽어옵니다. read를 호출할 때마다 서로 다른 개수의 행을 읽어오려면 dsReadSize 속성을 수정하십시오.

ds.ReadSize = 15000;

while 루프에서 read 함수를 사용하여 ds의 데이터 중 일부를 읽어옵니다. 루프는 hasdata(ds)false를 반환할 때까지 실행됩니다.

sums = [];
counts = [];
while hasdata(ds)
    T = read(ds);
    
    sums(end+1) = sum(T.ArrDelay);
    counts(end+1) = length(T.ArrDelay);
end

평균 도착 지연 시간을 계산합니다.

avgArrivalDelay = sum(sums)/sum(counts)
avgArrivalDelay = 
6.9670

데이터를 다시 읽어올 수 있도록 데이터저장소를 재설정합니다.

reset(ds)

한 번에 하나의 파일 읽어오기

데이터저장소에는 파일마다 행 개수가 다른 파일이 여러 개 포함되어 있을 수 있습니다. ReadSize 속성을 'file'로 설정하여, 데이터저장소에서 한 번에 하나의 파일을 전부 읽어올 수 있습니다.

ds.ReadSize = 'file';

ReadSize 값을 숫자에서 'file'로 변경하거나 그 반대로 변경할 경우 MATLAB®은 데이터저장소를 재설정합니다.

앞에서와 같이 while 루프에서 read 함수를 사용하여 ds에서 읽어온 다음, 평균 도착 지연 시간을 계산합니다.

sums = [];
counts = [];
while hasdata(ds)
    T = read(ds);
    
    sums(end+1) = sum(T.ArrDelay);
    counts(end+1) = length(T.ArrDelay);
end
avgArrivalDelay = sum(sums)/sum(counts)
avgArrivalDelay = 
6.9670

참고 항목

| |

도움말 항목