Hauptinhalt

Einlesen von Tabellenkalkulationsdaten in eine Tabelle

Tabellenkalkulationsdaten lassen sich in MATLAB® am besten in einer Tabelle darstellen, da in Tabellen eine Mischung aus numerischen und Textdaten sowie Variablen- und Zeilennamen gespeichert werden können. Sie können Daten interaktiv oder programmatisch in Tabellen einlesen. Klicken Sie auf der Registerkarte Home im Abschnitt Variable auf Import Data, um Daten interaktiv auszuwählen. Verwenden Sie eine der folgenden Funktionen, um Daten programmatisch zu importieren:

  • readtable: Einlesen eines einzelnen Arbeitsblatts

  • spreadsheetDatastore: Einlesen mehrerer Arbeitsblätter oder Dateien

Dieses Beispiel zeigt, wie Sie Tabellenkalkulationsdaten anhand beider Funktionen programmatisch importieren können. Die Datei mit Beispieldaten, airlinesmall_subset.xlsx, enthält ein Blatt für jedes Jahr zwischen 1996 und 2008. Die Blattnamen entsprechen der Jahreszahl, z. B. 2003.

Einlesen aller Daten vom Arbeitsblatt

Rufen Sie readtable auf, um alle Daten aus dem Arbeitsblatt namens 2008 einzulesen und dann nur die ersten 10 Zeilen und Spalten anzuzeigen. Geben Sie den Namen des Arbeitsblatts mit dem Name-Werte-Paar-Argument Sheet an. Wenn sich die Daten im ersten Arbeitsblatt der Datei befinden, ist es nicht nötig, den Namen mit Sheet anzugeben.

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   

Einlesen eines ausgewählten Bereichs aus einem bestimmten Arbeitsblatt

Lesen Sie aus dem Arbeitsblatt namens 1996 nur 10 Datenzeilen aus den ersten 5 Spalten ein, indem Sie den Bereich 'A1:E11' angeben. Die Funktion readtable gibt eine 10×5-Tabelle zurück.

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  

Konvertieren von Variablen in Zeitstempel, Zeitspannen oder kategorische Variablen

Während des Importvorgangs erkennt readtable automatisch die Datentypen der Variablen. Wenn Ihre Daten jedoch nicht standardisierte Datumsangaben, Zeitspannen oder wiederholte Beschriftungen enthalten, können Sie diese Variablen in den richtigen Datentyp konvertieren. Durch die Konvertierung von Variablen in den richtigen Datentyp können Sie effiziente Berechnungen und Vergleiche durchführen und die Speichernutzung verbessern. Stellen Sie zum Beispiel die Variablen Year, Month und DayofMonth als datetime (Zeitstempel-Variable) dar, UniqueCarrier als categorical (kategorische Variable) und ArrDelay als duration (Zeitspanne) in Minuten.

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);

Suchen Sie den Tag des Jahres mit der längsten Verspätung und zeigen Sie dann das Datum an.

ind = find(data.ArrDelay == max(data.ArrDelay));
data.Date(ind)
ans = datetime
   07-Apr-2008

Einlesen aller Arbeitsblätter aus einer Tabellenkalkulationsdatei

Ein Datastore ist nützlich, um beliebig große Datenmengen zu verarbeiten, die über mehrere Arbeitsblätter oder mehrere Tabellenkalkulationsdateien verteilt sind. Sie können den Datenimport und die Datenverarbeitung über den Datastore durchführen.

Erstellen Sie einen Datastore aus der Sammlung von Arbeitsblättern in airlinesmall_subset.xlsx, wählen Sie die zu importierenden Variablen aus und sehen Sie sich dann die Daten in der Vorschau an.

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   

Vor dem Datenimport können Sie angeben, welche Datentypen Sie verwenden möchten. Importieren Sie für dieses Beispiel UniqueCarrier als kategorische Variable.

 ds.SelectedVariableTypes(4) = {'categorical'};

Importieren Sie Daten mit den Funktionen readall oder read. Die Funktion readall setzt voraus, dass alle Daten in den Speicher passen, was bei den Beispieldaten der Fall ist. Berechnen Sie nach dem Import die maximale Ankunftsverzögerung für diesen Datensatz.

alldata = readall(ds);
max(alldata.ArrDelay)/60
ans = 
15.2333

Importieren Sie bei großen Datensätzen Teile der Datei mit der Funktion read. Weitere Informationen finden Sie unter Einlesen einer Sammlung oder Reihe von Tabellenkalkulationsdateien.

Siehe auch

|

Themen