Main Content

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

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

데이터저장소 만들기

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

참고 항목

| |

관련 항목