테이블 형식의 대용량 텍스트 파일 읽어오기 및 분석하기
이 예제에서는 테이블 형식의 데이터가 포함된 대용량 텍스트 파일을 위한 데이터저장소를 생성한 다음, 한 번에 데이터 블록 하나씩 또는 파일 하나씩을 읽어오고 처리하는 방법을 보여줍니다.
데이터저장소 만들기
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
데이터 일부 읽어오기
기본적으로, read
는 TabularTextDatastore
에서 한 번에 20,000개 행을 읽어옵니다. read
를 호출할 때마다 서로 다른 개수의 행을 읽어오려면 ds
의 ReadSize
속성을 수정하십시오.
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
참고 항목
tabularTextDatastore
| tall
| mapreduce