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 comodouble
utilizanNaN
(no es un número) para representar los valores que faltan.
x = [NaN 1 2 3 4];
También puede utilizar el valormissing
para representar datos numéricos que faltan u otros tipos de datos, comodatetime
,string
ycategorical
. MATLAB convierte automáticamente el valormissing
de 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 categoricalcat1 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ónstandardizeMissing
para convertir esos valores en el valor que falta estándar para ese tipo de datos. Por ejemplo, trate 4 como un valordouble
que 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ónsort
para mover los valoresNaN
al 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
, elNaN
no aparecerá porque la funciónplot
ignorará dicho valor y representará los puntos restantes con normalidad.
nanData = [1:9 NaN]; plot(1:10,nanData)
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 tipoNaN
y luego elegir si ignorarlo o eliminarlo antes de calcular el promedio.
meanData = mean(nanData)
meanData = NaN
Una forma de encontrar valores de tipoNaN
en 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ónismissing
devuelve 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 NaT1 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. Usefillmissing
para reemplazar los valores que faltan con otro valor o usermmissing
para 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 valoresNaN
de 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
ismissing
|fillmissing
|standardizeMissing
|missing