Main Content

스프레드시트 데이터를 테이블로 읽어오기

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, MonthDayofMonth를 하나의 datetime형 변수로 나타내고, UniqueCarriercategorical형으로, ArrDelayduration형(단위: 분)으로 나타냅니다.

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를 참조하십시오.

참고 항목

|

관련 항목