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)
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
ismissing
| fillmissing
| standardizeMissing
| missing