Contenu principal

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 :

  • readtable pour lire une seule feuille de calcul.

  • spreadsheetDatastore pour 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

|

Rubriques