主要内容

MATLAB中的缺失数据

处理缺失数据是数据预处理中的一项常见任务。虽然有时缺失的值表示数据中有意义的事件,但它们通常表示不可靠或不可用的数据点。在任何一种情况下,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)

图中包含一个轴。轴包含一个类型为line的对象。

但是,如果计算数据的平均值,结果是。在这种情况下,提前知道数据包含,然后选择忽略或删除它,再计算平均值。

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

另请参阅

|||

相关的话题