主要内容

在MATLAB缺失的数据

处理缺失数据在数据预处理是一种常见的任务。尽管有时缺失值表示一个有意义的事件数据,他们经常代表不可靠的或无用的数据点。在这两种情况下,MATLAB®有许多选项来处理缺失数据。

创建和组织缺失的数据

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

x =(南1 2 3 4);

您还可以使用失踪值代表失踪数字数据或其他类型的数据,如datetime,字符串,分类。MATLAB自动转换失踪值数据的原生类型。

xDouble =(失踪1 2 3 4)
xDouble =1×5南1 2 3 4
1:4 xDatetime = [datetime失踪(2014年,1))
xDatetime =1 x5 datetimeNaT 01 - 1月- 2014年1 - 3月- 2014年2月- 2014年01 - 01 - 4月- 2014
xString =[失踪“一个”“b”“c”“d”]
xString =1 x5字符串<失踪>“a”“b”“c”“d”
xCategorical =[失踪分类({“cat1”“cat2”“cat3”“cat4”}))
xCategorical =1 x5分类<定义> cat1 cat2 cat3 cat4

一个数据集可能包含值,你想把缺失的数据,但不标准MATLAB在MATLAB如缺失值。您可以使用standardizeMissing函数来将这些值转换成标准的缺失值的数据类型。例如,治疗4作为一个失踪价值除了

xStandard = standardizeMissing (xDouble[4南)
xStandard =1×5南1 2 3南

假设您想保留缺失值作为数据集的一部分从其余的数据但隔离他们。几个MATLAB函数使您能够控制在做进一步处理之前缺失值的位置。例如,使用“MissingPlacement”选择与排序函数将年代的数据。

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

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

即使你不显式地创建缺失的值在MATLAB中,他们可以出现在导入现有的数据或计算与数据。如果你不知道缺失值数据,后续计算或分析可能会误导人。

举个例子,如果你在不知情的情况下画出向量包含值时,没有出现,因为情节函数忽略了它和情节其余点正常。

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

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

然而,如果你计算数据的平均值,结果是。在这种情况下,它更有助于预先知道数据包含一个,然后选择忽略或删除它之前计算的平均。

meanData =意味着(nanData)
meanData =南

找到一个方法在数据使用isnan函数,它返回一个逻辑数组表示任何的位置价值。

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

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

TFdouble = ismissing (xDouble)
TFdouble =1 x5逻辑阵列1 0 0 0 0
TFdatetime = ismissing (xDatetime)
TFdatetime =1 x5逻辑阵列1 0 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

缺失值可以表示不可用数据进行处理或分析。使用fillmissing来代替缺失值与另一个值,或者使用rmmissing完全删除缺失值。

xFill = fillmissing (xStandard,“不变”,0)
xFill =1×50 1 2 3 0
xRemove = rmmissing (xStandard)
xRemove =1×31 2 3

许多MATLAB函数允许您忽略缺失值,而无需明确定位,填补,或者删除它们。例如,如果你计算一个向量包含的总和值,结果是。然而,你可以直接忽略在利用求和“omitnan”选择与总和函数。

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

另请参阅

|||

相关的话题