스프레드시트 데이터를 테이블로 읽어오기
MATLAB®에서 스프레드시트 데이터를 나타낼 수 있는 가장 좋은 방법은 숫자형 데이터와 텍스트 데이터를 같이 저장할 수 있을 뿐 아니라 변수 이름과 행 이름을 저장할 수 있는 테이블을 사용하는 것입니다. 대화형 방식이나 프로그래밍 방식으로 데이터를 테이블로 읽어올 수 있습니다. 대화형 방식으로 데이터를 선택하려면 홈 탭의 변수 섹션에서 데이터 가져오기를 클릭하십시오. 프로그래밍 방식으로 데이터를 가져오려면 다음 함수 중 하나를 사용하십시오.
readtable— 단일 워크시트를 읽어옵니다.spreadsheetDatastore— 여러 개의 워크시트나 파일을 읽어옵니다.
이 예제에서는 두 함수를 모두 사용하여 스프레드시트 데이터를 프로그래밍 방식으로 가져오는 방법을 보여줍니다. 샘플 데이터 airlinesmall_subset.xlsx에는 1996년부터 2008년까지 각 연도별로 하나의 시트가 포함되어 있습니다. 시트 이름은 연도에 해당합니다(예: 2003).
워크시트에서 모든 데이터 읽어오기
readtable을 호출하여 이름이 2008인 워크시트에 있는 모든 데이터를 읽어온 다음 처음 10개 행과 열만 표시해 보겠습니다. Sheet 이름-값 쌍의 인수를 사용하여 워크시트 이름을 지정합니다. 데이터가 파일의 첫 번째 워크시트에 있는 경우에는 Sheet를 지정할 필요가 없습니다.
T = readtable('airlinesmall_subset.xlsx','Sheet','2008'); T(1:10,1:10)
ans=10×10 table
Year Month DayofMonth DayOfWeek DepTime CRSDepTime ArrTime CRSArrTime UniqueCarrier FlightNum
____ _____ __________ _________ _______ __________ _______ __________ _____________ _________
2008 1 3 4 1012 1010 1136 1135 {'WN'} 752
2008 1 4 5 1303 1300 1411 1415 {'WN'} 1161
2008 1 6 7 2134 2115 2242 2220 {'WN'} 1830
2008 1 7 1 1734 1655 54 30 {'WN'} 302
2008 1 8 2 1750 1755 2018 2035 {'WN'} 1305
2008 1 9 3 640 645 855 905 {'WN'} 896
2008 1 10 4 1943 1945 2039 2040 {'WN'} 120
2008 1 11 5 1303 1305 1401 1400 {'WN'} 1685
2008 1 13 7 1226 1230 1415 1400 {'WN'} 1118
2008 1 14 1 1337 1340 1623 1630 {'WN'} 730
특정 워크시트에서 선택한 범위 읽어오기
이름이 1996인 워크시트에서 범위 'A1:E11'을 지정하여 처음 5개 열에서 10개 행의 데이터만 읽어오겠습니다. readtable 함수는 10×5 테이블을 반환합니다.
T_selected = readtable('airlinesmall_subset.xlsx','Sheet','1996','Range','A1:E11')
T_selected=10×5 table
Year Month DayofMonth DayOfWeek DepTime
____ _____ __________ _________ _______
1996 1 18 4 2117
1996 1 12 5 1252
1996 1 16 2 1441
1996 1 1 1 2258
1996 1 4 4 1814
1996 1 31 3 1822
1996 1 18 4 729
1996 1 26 5 1704
1996 1 11 4 1858
1996 1 7 7 2100
변수를 datetime형, duration형 또는 categorical형으로 변환하기
데이터를 가져오는 동안 readtable은 변수의 데이터형을 자동으로 감지합니다. 그러나 표준에서 벗어나는 날짜, 기간 또는 반복된 레이블이 데이터에 포함되어 있으면 이러한 변수를 올바른 데이터형으로 변환할 수 있습니다. 변수를 올바른 데이터형으로 변환하면 계산과 비교를 효율적으로 수행할 수 있으며 메모리 사용이 개선됩니다. 예를 들어, 변수 Year, Month 및 DayofMonth를 하나의 datetime형 변수로 나타내고, UniqueCarrier를 categorical형으로, ArrDelay를 duration형(단위: 분)으로 나타냅니다.
data = T(:,{'Year','Month','DayofMonth','UniqueCarrier','ArrDelay'});
data.Date = datetime(data.Year,data.Month,data.DayofMonth);
data.UniqueCarrier = categorical(data.UniqueCarrier);
data.ArrDelay = minutes(data.ArrDelay);그 해에 지연 시간이 가장 긴 날을 찾은 다음 날짜를 표시합니다.
ind = find(data.ArrDelay == max(data.ArrDelay)); data.Date(ind)
ans = datetime
07-Apr-2008
스프레드시트 파일에서 모든 워크시트 읽어오기
데이터저장소는 여러 개의 워크시트나 여러 개의 스프레드시트 파일에 따로 떨어져 있는 임의의 많은 데이터를 처리하는 데 유용합니다. 데이터저장소를 통해 데이터 가져오기 및 데이터 처리를 수행할 수 있습니다.
airlinesmall_subset.xlsx의 워크시트 모음에서 데이터저장소를 생성하고, 가져올 변수를 선택한 후 데이터를 미리 봅니다.
ds = spreadsheetDatastore('airlinesmall_subset.xlsx'); ds.SelectedVariableNames = {'Year','Month','DayofMonth','UniqueCarrier','ArrDelay'}; preview(ds)
ans=8×5 table
Year Month DayofMonth UniqueCarrier ArrDelay
____ _____ __________ _____________ ________
1996 1 18 {'HP'} 6
1996 1 12 {'HP'} 11
1996 1 16 {'HP'} -13
1996 1 1 {'HP'} 1
1996 1 4 {'US'} -9
1996 1 31 {'US'} 9
1996 1 18 {'US'} -2
1996 1 26 {'NW'} -10
데이터를 가져오기 전에, 사용할 데이터형을 지정할 수 있습니다. 이 예제에서는 UniqueCarrier를 categorical형 변수로 가져옵니다.
ds.SelectedVariableTypes(4) = {'categorical'};readall 또는 read 함수를 사용하여 데이터를 가져옵니다. readall 함수를 사용하려면 이 샘플 데이터와 같이, 모든 데이터가 메모리에 들어가야 합니다. 가져온 후에 이 데이터셋에 대해 최대 도착 지연 시간을 계산합니다.
alldata = readall(ds); max(alldata.ArrDelay)/60
ans = 15.2333
대규모 데이터 세트의 경우에는 read 함수를 사용하여 파일의 일부를 가져오십시오. 자세한 내용은 Read Collection or Sequence of Spreadsheet Files를 참조하십시오.
참고 항목
readtable | spreadsheetDatastore