处理缺失数据是数据预处理中的一项常见任务。虽然有时缺失的值表示数据中有意义的事件,但它们通常表示不可靠或不可用的数据点。在任何一种情况下,MATLAB®都有许多处理缺失数据的选项。
在MATLAB中缺失值的形式取决于数据类型。例如,数字数据类型双
使用南
(不是一个数字)来表示缺失的值。
x = [n1 2 3 4];
也可以使用失踪
值来表示缺少的数值数据或其他类型的数据,例如datetime
,字符串
,分类
。MATLAB自动转换失踪
值转换为数据的原生类型。
xDouble =[缺少1 2 3 4]
xDouble =1×5南1 2 3 4
xDatetime = [missing datetime(2014,1:4,1)]
xDatetime =1 x5 datetime日期:2014年1月1日-2014年2月1日-2014年3月1日-2014年4月
xString =[失踪“一个”“b”“c”“d”]
xString =1 x5字符串"a" "b" "c" "d"
xCategorical =[缺少categorical({)]“cat1”“cat2”“cat3”“cat4”}))
xCategorical =1 x5分类cat1 cat2 cat3 cat4
数据集可能包含您希望视为缺失数据的值,但不是MATLAB中的标准缺失值,例如南
。你可以使用standardizeMissing
函数将这些值转换为该数据类型的标准缺失值。例如,把4当作缺失双
除了价值南
。
xStandard = standarzemissing (xDouble,[4 NaN])
xStandard =1×5南1 2 3南
假设您希望保留丢失的值作为数据集的一部分,但将它们与其他数据隔离。几个MATLAB函数使您能够在进一步处理之前控制缺失值的位置。例如,使用“MissingPlacement”
选择与排序
函数将南
S到数据的末尾。
xSort =排序(xStandard,“MissingPlacement”,“最后一次”)
xSort =1×51 2 3南南
即使您没有在MATLAB中显式地创建缺失的值,它们也会在导入现有数据或使用数据进行计算时出现。如果您没有意识到数据中缺失的值,后续的计算或分析可能会产生误导。
例如,如果你不知道画一个包含a的向量南
值时,南
不出现是因为情节
函数忽略它并正常地绘制剩下的点。
nanData = [1:9 NaN];nanData情节(1:10)
但是,如果计算数据的平均值,结果是南
。在这种情况下,提前知道数据包含南
,然后选择忽略或删除它,再计算平均值。
meanData =意味着(nanData)
meanData =南
一种方法南
数据中的S是通过isnan
函数,它返回一个逻辑数组,指示any的位置南
价值。
TF = isnan (nanData)
TF =1 x10逻辑阵列0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
类似地,ismissing
函数返回多个数据类型中缺失值的位置。
TFdouble = ismissing (xDouble)
TFdouble =1 x5逻辑阵列1 0 0 0
TFdatetime = ismissing (xDatetime)
TFdatetime =1 x5逻辑阵列1 0 0 0
假设您正在处理一个由多种数据类型的变量组成的表或时间表。您可以通过一次调用找到所有缺失的值ismissing
不管他们是哪种类型。
xTable =表(xDouble”、xDatetime”xString ', xCategorical ')
xTable =5×4表Var1 Var2 Var3 Var4 ____ ___________ _________ ___________ 南NaT失踪> < <定义> 1 01 - 1月- 2014”“cat1 2 01 - 2014年2月,“b”cat2 3 01 - 3月- 2014“c”cat3 4 01 - 4月- 2014 cat4“d”
TF = ismissing (xTable)
TF =5 x4逻辑阵列1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
缺失的值可能表示无法处理或分析的数据。使用fillmissing
用另一个值替换缺失的值,或使用rmmissing
完全删除缺失的值。
xFill = fillmissing (xStandard,“不变”, 0)
xFill =1×50 1 2 3 0
xRemove = rmmissing (xStandard)
xRemove =1×31 2 3
许多MATLAB函数使您能够忽略缺失的值,而不必首先明确地定位、填充或删除它们。例如,如果你计算一个包含南
值,结果是南
。但是,您可以直接忽略南
和中的S“omitnan”
选择与总和
函数。
sumNan =总和(xDouble)
sumNan =南
sumOmitnan =总和(xDouble,“omitnan”)
sumOmitnan = 10
fillmissing
|ismissing
|失踪
|standardizeMissing