Lire les données de feuilles de calcul dans une table
Le meilleur moyen de représenter les données de feuilles de calcul dans MATLAB® est une table, car elle peut stocker un mélange de données numériques et textuelles ainsi que des noms de variables et de lignes. Vous pouvez lire les données dans des tables de manière interactive ou programmatique. Pour sélectionner les données de manière interactive, cliquez sur Import Data dans l’onglet Home, section Variable. Pour importer les données de manière programmatique, utilisez l’une des fonctions suivantes :
readtablepour lire une seule feuille de calcul.spreadsheetDatastorepour lire plusieurs feuilles de calcul ou fichiers.
L’exemple suivant montre comment importer les données de feuilles de calcul de manière programmatique avec ces deux fonctions. L’échantillon de données airlinesmall_subset.xlsx contient une feuille par an de 1996 à 2008. Les noms des feuilles correspondent à l’année, par exemple 2003.
Lire toutes les données d’une feuille de calcul
Appelez readtable pour lire toutes les données de la feuille de calcul nommée 2008, puis affichez seulement les 10 premières lignes et colonnes. Spécifiez le nom de la feuille de calcul avec l’argument nom-valeur Sheet. Si vos données se trouvent sur la première feuille de calcul du fichier, vous n’avez pas besoin de spécifier 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
Lire une plage sélectionnée dans une feuille de calcul spécifique
Dans la feuille de calcul nommée 1996, lisez seulement 10 lignes de données dans les 5 premières colonnes en spécifiant la plage 'A1:E11'. La fonction readtable renvoie une table 10 x 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
Convertir des variables vers le type datetime, duration ou categorical
Pendant le processus d’importation, readtable détecte automatiquement le type de données des variables. Cependant, si vos données contiennent des dates non standard, des durées ou des étiquettes qui se répètent, vous pouvez convertir ces variables vers les types de données appropriés. La conversion des variables vers les types de données appropriés permet d’effectuer des calculs et des comparaisons efficaces et améliore l’utilisation de la mémoire. Par exemple, représentez les variables Year, Month et DayofMonth en tant que variable datetime unique, la variable UniqueCarrier comme étant de type categorical et ArrDelay comme étant de type duration en minutes.
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);Identifiez le jour de l’année présentant le plus long retard, puis affichez la date.
ind = find(data.ArrDelay == max(data.ArrDelay)); data.Date(ind)
ans = datetime
07-Apr-2008
Lire toutes les feuilles de calcul d’un fichier de tableur
Un datastore permet de traiter des quantités de données de taille arbitraire réparties dans plusieurs feuilles de calcul ou plusieurs fichiers de tableur. Vous pouvez importer et traiter les données par le biais du datastore.
Créez un datastore à partir de la collection de feuilles de calcul de airlinesmall_subset.xlsx. Sélectionnez les variables à importer, puis affichez un aperçu des données.
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
Avant d’importer les données, vous pouvez spécifier les types de données à utiliser. Pour cet exemple, importez UniqueCarrier en tant que variable catégorielle.
ds.SelectedVariableTypes(4) = {'categorical'};Importez les données avec les fonctions readall ou read. La fonction readall nécessite que toutes les données tiennent dans la mémoire, ce qui est le cas pour cet échantillon de données. Après l’importation, calculez le retard maximal à l’arrivée pour ce jeu de données.
alldata = readall(ds); max(alldata.ArrDelay)/60
ans = 15.2333
Pour les jeux de données volumineux, importez des portions de fichier avec la fonction read. Pour plus d’informations, consultez Lire des collections ou des séquences de feuilles de calcul.
Voir aussi
readtable | spreadsheetDatastore