在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
另请参阅
ismissing
|fillmissing
|standardizeMissing
|失踪