스프레드시트 데이터를 테이블로 읽어오기
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