Main Content

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 comodoubleutilizanNaN(no es un número) para representar los valores que faltan.

x = [NaN 1 2 3 4];

También puede utilizar el valormissingpara representar datos numéricos que faltan u otros tipos de datos, comodatetime,stringycategorical. MATLAB convierte automáticamente el valormissingde los datos al tipo original de los datos.

xDouble = [missing 1 2 3 4]
xDouble =1×5NaN 1 2 3 4
xDatetime = [missing datetime(2014,1:4,1)]
xDatetime =1x5 datetimeNaT 01-Jan-2014 01-Feb-2014 01-Mar-2014 01-Apr-2014
xString = [missing"a""b""c""d"]
xString =1x5 string "a" "b" "c" "d"
xCategorical = [missing categorical({'cat1''cat2''cat3'“cat4”})]
xCategorical =1x5 categorical 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, comoNaN. Puede utilizar la funciónstandardizeMissingpara convertir esos valores en el valor que falta estándar para ese tipo de datos. Por ejemplo, trate 4 como un valordoubleque falta además deNaN.

xStandard = standardizeMissing(xDouble,[4 NaN])
xStandard =1×5NaN 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ónsortpara mover los valoresNaNal final de los datos.

xSort = sort(xStandard,'MissingPlacement','last')
xSort =1×51 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 valorNaN, elNaNno aparecerá porque la funciónplotignorará 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 esNaN. En este caso, es más útil saber de antemano que los datos contienen un valor de tipoNaNy luego elegir si ignorarlo o eliminarlo antes de calcular el promedio.

meanData = mean(nanData)
meanData = NaN

Una forma de encontrar valores de tipoNaNen los datos es mediante la funciónisnan, que devuelve un arreglo lógico que indica la ubicación de cualquier valorNaN.

TF = isnan(nanData)
TF =1x10 logical array0 0 0 0 0 0 0 0 0 1

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

TFdouble = ismissing(xDouble)
TFdouble =1x5 logical array1 0 0 0 0
TFdatetime = ismissing(xDatetime)
TFdatetime =1x5 logical array1 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 aismissing, independientemente de su tipo.

xTable = table(xDouble',xDatetime',xString',xCategorical')
xTable =5×4 tableVar1 Var2 Var3 Var4 ____ ___________ _________ ___________ NaN NaT   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 array1 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. Usefillmissingpara reemplazar los valores que faltan con otro valor o usermmissingpara eliminar los valores que faltan por completo.

xFill = fillmissing(xStandard,'constant',0)
xFill =1×50 1 2 3 0
xRemove = rmmissing(xStandard)
xRemove =1×31 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 valoresNaN, el resultado esNaN. Sin embargo, puede ignorar directamente los valoresNaNde la suma utilizando la opción'omitnan'con la funciónsum.

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

Consulte también

|||

Temas relacionados