主要内容

MATLAB中的缺失数据

处理缺失数据是数据预处理中的一个常见任务。尽管有时缺失值表示数据中有意义的事件,但它们通常表示不可靠或不可用的数据点。无论哪种情况,MATLAB®都有许多处理缺失数据的选项。

创建和组织缺失数据

MATLAB中缺失值的形式取决于数据类型。例如,数值数据类型,例如使用(不是数字)来表示缺失的值。

x = [NaN 1 2 3 4];

你也可以使用失踪值来表示缺失的数字数据或其他类型的数据,例如datetime字符串,分类.MATLAB自动转换失踪值转换为数据的原生类型。

xDouble =[缺少1 2 3 4]
xDouble =1×5NaN 1 2 3 4
xDatetime =[缺少datetime(2014,1:4,1)]
xDatetime =1 x5 datetime2014年1月-2014年2月-2014年3月-2014年1月- 4月
xString = [missing .“一个”“b”“c”“d”
xString =1 x5字符串<缺少> "a" "b" "c" "d"
xCategorical =[缺少categorical({“cat1”“cat2”“cat3”“cat4”}))
xCategorical =1 x5分类 cat1 cat2 cat3 cat4

数据集可能包含您想要作为缺失数据处理的值,但不是MATLAB中的标准MATLAB缺失值,例如.您可以使用standardizeMissing函数将这些值转换为该数据类型的标准缺失值。例如,将4视为缺失价值除了…

xStandard = standarzemissing (xDouble,[4 NaN])
xStandard =1×5NaN 1 2 3 NaN

假设您希望将缺失的值保留为数据集的一部分,但将它们与其余数据隔离。几个MATLAB函数使您能够在进一步处理之前控制缺失值的位置。例如,使用“MissingPlacement”选项中的排序移动功能S到数据的末尾。

xSort = sort(xStandard,“MissingPlacement”“最后一次”
xSort =1×51 2 3楠楠

查找、替换和忽略丢失的数据

即使您没有显式地在MATLAB中创建缺失值,它们也会在导入现有数据或使用数据进行计算时出现。如果您没有意识到数据中的缺失值,则后续的计算或分析可能会产生误导。

例如,如果你无意中画出一个包含a的向量值时,不出现是因为情节函数忽略它,并正常绘制剩余点。

nanData = [1:9 NaN];nanData情节(1:10)

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

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

meanData = mean(nanData)
meanData = NaN

一种方法是S在数据中是通过使用isnan函数,该函数返回指示any的位置的逻辑数组价值。

TF = isnan(nanData)
TF =1x10逻辑阵列0 0 0 0 0 0 0 1

类似地,ismissing函数返回多个数据类型的数据中缺失值的位置。

TFdouble = ismissing(xDouble)
TFdouble =1x5逻辑阵列1 0 0 0 0
TFdatetime = ismissing(xDatetime)
TFdatetime =1x5逻辑阵列1 0 0 0 0

假设您正在处理由多种数据类型变量组成的表格或时间表。调用即可找到所有缺失的值ismissing,不管他们的类型。

xTable = table(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 =5x4逻辑阵列1 1 1 1 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 = sum(xDouble)
sumNan = NaN
sumOmitnan = sum(xDouble,“omitnan”
sumOmitnan = 10

另请参阅

|||

相关的话题