主要内容

MATLAB中的缺失数据

处理缺失数据是数据预处理中的一项常见任务。虽然有时丢失的值表示数据中有意义的事件,但它们通常表示不可靠或不可用的数据点。在这两种情况下,MATLAB®有许多处理丢失数据的选项。

创建和组织缺失数据

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

x = [NaN 1 2 3 4];

你也可以用the失踪值表示缺少的数字数据或其他类型的数据,例如datetime字符串,分类.MATLAB自动转换失踪值设置为数据的本机类型。

xDouble =[缺1 2 3 4]
xDouble =1×5NaN 1 2 3 4
xDatetime = [missing datetime(2014,1:4,1)]
xDatetime =1 x5 datetimeNaT 01- 1- 2014 01- 2 -2014 01- 3 -2014 01- 4 -2014
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中的MATLAB缺失值,例如.你可以使用standardizeMissing函数将这些值转换为该数据类型的标准缺失值。例如,将4视为丢失附加价值

xStandard =标准化发射(xDouble,[4 NaN])
xStandard =1×5NaN 1 2 3

假设您希望将丢失的值保留为数据集的一部分,但要将它们与其他数据隔离。一些MATLAB函数使您能够在进一步处理之前控制缺失值的位置。例如,使用the“MissingPlacement”选择与排序函数将S到最后的数据。

xSort =排序(xStandard,“MissingPlacement”“最后一次”
xSort =1×51 2 3南南

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

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

例如,如果你不知道画一个包含a的向量值时,没有出现,因为情节函数忽略它,并正常绘制其余的点。

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

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

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

meanData =意味着(nanData)
meanData =南

有一种方法数据中的S是通过使用isnan函数,该函数返回一个逻辑数组,该逻辑数组指示任意价值。

TF = isnan (nanData)
TF =1 x10逻辑阵列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 1 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×51 .单词brace联想记忆
xRemove = rmmissing (xStandard)
xRemove =1×31 2 3

许多MATLAB函数使您能够忽略丢失的值,而不必首先显式地定位、填充或删除它们。例如,如果你计算一个包含值,结果是.但是,你可以直接忽略在和中加入S“omitnan”选择与总和函数。

sumNan =总和(xDouble)
sumNan =南
sumOmitnan =总和(xDouble,“omitnan”
sumOmitnan = 10

另请参阅

|||

相关的话题