Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Datos que faltan en MATLAB

Trabajar con datos que faltan es una tarea común en el preprocesamiento de datos. Aunque a veces los valores que faltan significan que ha habido un evento significativo en los datos, a menudo representan puntos de datos no fiables o no utilizables. En cualquier caso, MATLAB® tiene muchas opciones para gestionar los datos que faltan.

Crear y organizar los datos que faltan

La forma que toman los valores que faltan en MATLAB depende del tipo de datos. Por ejemplo, los tipos de datos numéricos como double utilizan NaN (no es un número) para representar los valores que faltan.

x = [NaN 1 2 3 4];

También puede utilizar el valor missing para representar datos numéricos que faltan u otros tipos de datos, como datetime, string y categorical. MATLAB convierte automáticamente el valor missing de los datos al tipo original de los datos.

xDouble = [missing 1 2 3 4]
xDouble = 1×5

   NaN     1     2     3     4

xDatetime = [missing datetime(2014,1:4,1)]
xDatetime = 1x5 datetime
   NaT           01-Jan-2014   01-Feb-2014   01-Mar-2014   01-Apr-2014

xString = [missing "a" "b" "c" "d"]
xString = 1x5 string
    <missing>    "a"    "b"    "c"    "d"

xCategorical = [missing categorical({'cat1' 'cat2' 'cat3' 'cat4'})]
xCategorical = 1x5 categorical
     <undefined>      cat1      cat2      cat3      cat4 

Un conjunto de datos puede contener valores que quiere tratar como datos que faltan, pero que no son valores que faltan estándar de MATLAB en MATLAB, como NaN. Puede utilizar la función standardizeMissing para convertir esos valores en el valor que falta estándar para ese tipo de datos. Por ejemplo, trate 4 como un valor double que falta además de NaN.

xStandard = standardizeMissing(xDouble,[4 NaN])
xStandard = 1×5

   NaN     1     2     3   NaN

Supongamos que desea mantener los valores que faltan como parte del conjunto de datos, pero separarlos del resto de los datos. Varias funciones de MATLAB le permiten controlar la colocación de los valores que faltan antes del procesamiento posterior. Por ejemplo, utilice la opción 'MissingPlacement' con la función sort para mover los valores NaN al final de los datos.

xSort = sort(xStandard,'MissingPlacement','last')
xSort = 1×5

     1     2     3   NaN   NaN

Buscar, sustituir y omitir los datos que faltan

Incluso si no crea explícitamente valores que faltan en MATLAB, estos pueden aparecer al importar datos existentes o calcular con los datos. Si desconoce los valores que faltan en los datos, el cálculo o el análisis posteriores pueden ser erróneos.

Por ejemplo, si sin saberlo representa un vector que contiene un valor NaN, el NaN no aparecerá porque la función plot ignorará dicho valor y representará los puntos restantes con normalidad.

nanData = [1:9 NaN];
plot(1:10,nanData)

Figure contains an axes object. The axes object contains an object of type line.

Sin embargo, si calcula el promedio de los datos, el resultado es NaN. En este caso, es más útil saber de antemano que los datos contienen un valor de tipo NaN y luego elegir si ignorarlo o eliminarlo antes de calcular el promedio.

meanData = mean(nanData)
meanData = NaN

Una forma de encontrar valores de tipo NaN en los datos es mediante la función isnan, que devuelve un arreglo lógico que indica la ubicación de cualquier valor NaN.

TF = isnan(nanData)
TF = 1x10 logical array

   0   0   0   0   0   0   0   0   0   1

De forma similar, la función ismissing devuelve la ubicación de valores que faltan en los datos de varios tipos de datos.

TFdouble = ismissing(xDouble)
TFdouble = 1x5 logical array

   1   0   0   0   0

TFdatetime = ismissing(xDatetime)
TFdatetime = 1x5 logical array

   1   0   0   0   0

Supongamos que está trabajando con una tabla o un calendario compuesto por variables con varios tipos de datos. Puede encontrar todos los valores que faltan con una llamada a ismissing, independientemente de su tipo.

xTable = table(xDouble',xDatetime',xString',xCategorical')
xTable=5×4 table
    Var1       Var2          Var3          Var4    
    ____    ___________    _________    ___________

    NaN             NaT    <missing>    <undefined>
      1     01-Jan-2014    "a"          cat1       
      2     01-Feb-2014    "b"          cat2       
      3     01-Mar-2014    "c"          cat3       
      4     01-Apr-2014    "d"          cat4       

TF = ismissing(xTable)
TF = 5x4 logical array

   1   1   1   1
   0   0   0   0
   0   0   0   0
   0   0   0   0
   0   0   0   0

Los valores que faltan pueden representar datos no utilizables para su procesamiento o análisis. Use fillmissing para reemplazar los valores que faltan con otro valor o use rmmissing para eliminar los valores que faltan por completo.

xFill = fillmissing(xStandard,'constant',0)
xFill = 1×5

     0     1     2     3     0

xRemove = rmmissing(xStandard)
xRemove = 1×3

     1     2     3

Muchas funciones de MATLAB le permiten ignorar los valores que faltan, sin tener que localizarlos, rellenarlos o eliminarlos de forma explícita primero. Por ejemplo, si se calcula la suma de un vector que contiene valores NaN, el resultado es NaN. Sin embargo, puede ignorar directamente los valores NaN de la suma utilizando la opción 'omitnan' con la función sum.

sumNan = sum(xDouble)
sumNan = NaN
sumOmitnan = sum(xDouble,'omitnan')
sumOmitnan = 10

Consulte también

| | |

Temas relacionados