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 ArbeitsblattsspreadsheetDatastore: 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
readtable | spreadsheetDatastore