缺少数据的工作是数据预处理的共同任务。虽然有时缺失值的数据表示一个有意义的活动,他们往往代表了不可靠的或不可用的数据点。在这两种情况下,MATLAB®具有处理缺失数据很多选择。
缺失值取MATLAB的形式取决于数据类型。例如,数值数据类型,例如双
采用为NaN
(非数字)来表示缺失值。
X = [NaN的1 2 3 4];
您也可以使用失踪
值表示缺少数字数据或其它类型的数据,如约会时间
,串
和明确的
。MATLAB自动转换失踪
值数据的原始类型。
xDouble = [缺失1 2 3 4]
xDouble =1×5为NaN 1 2 3 4
xDatetime = [丢失的日期时间(2014,1:4,1)]
xDatetime =1×5日期时间的NaT 01-JAN-2014 01月2014 01-MAR-2014 01-APR-2014
xString = [缺“一个”“B”“C”“d”]
xString =1×5串<缺失>的 “a” “b” 的 “C”, “d”
xCategorical = [丢失分类({'CAT1''CAT2''CAT3''CAT4'})]
xCategorical =1×5类别<未定义> CAT1 CAT2 CAT3 CAT4
数据集可能包含的值,你要视为丢失的数据,但不是在MATLAB如MATLAB标准缺失值为NaN
。您可以使用standardizeMissing
功能,这些值转换成该数据类型的标准缺失值。例如,治疗4作为失踪双
除了价值为NaN
。
xStandard = standardizeMissing(xDouble,[4的NaN])
xStandard =1×5为NaN 1 2 3的NaN
假设你想保留缺失值作为你的数据集的一部分,但是从数据的其余部分隔离他们。几个MATLAB功能使您能够控制进一步处理之前遗漏值的位置。例如,使用'MissingPlacement'
与选项分类
功能举动为NaN
S到数据的末端。
xSort =排序(xStandard,'MissingPlacement','持续')
xSort =1×51 2 3楠楠
即使你不明确创建MATLAB缺失值,就可以导入现有的数据或数据计算时出现。如果你不知道你的数据缺失值,后续计算或分析可能会产生误导。
例如,如果你在不知不觉中绘制一个包含矢量为NaN
值时,为NaN
不会出现,因为情节
函数忽略它和正常打印其余各点。
nanData = [1:9的NaN];图(1:10,nanData)
但是,如果计算平均数据,其结果是为NaN
。在这种情况下,它更有助于提前知道数据包含为NaN
,然后选择忽略或计算平均值之前将其删除。
meanData =平均值(nanData)
meanData = NaN的
找到一种方法为NaN
S IN数据是通过使用isnan
函数,该函数返回一个逻辑阵列指示任何位置为NaN
值。
TF = isnan(nanData)
TF =1×10的逻辑阵列0 0 0 0 0 0 0 0 0 1
同样的,不见了
函数返回多种数据类型的数据的缺失值的位置。
TFdouble = ISMISSING(xDouble)
TFdouble =1×5阵列的逻辑1 0 0 0 0
TFdatetime = ISMISSING(xDatetime)
TFdatetime =1×5阵列的逻辑1 0 0 0 0
假设您正在使用与多种数据类型的变量由一个表或时间表工作。你可以找到所有失踪的值与一个调用不见了
,无论其类型。
xTable =表(xDouble 'xDatetime',xString 'xCategorical')
xTable =5×4表VAR1 VAR2 VAR3 VAR4 ____ ___________ _________ ___________的NaN的NaT <缺失> <未定义> 1 01-JAN-2014 “一” CAT1 2 01-FEB-2014 “b” 的CAT2 3 01-MAR-2014 “C” CAT3 4 01-APR-2014 “d” CAT4
TF = ISMISSING(xTable)
TF =5x4的逻辑阵列1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
缺失值可以表示用于处理或分析无用数据。采用fillmissing
与其他值,或使用替代缺失值rmmissing
完全取消缺失值。
弹力丰盈= fillmissing(xStandard,'不变',0)
弹力丰盈=1×50 1 2 3 0
xRemove = rmmissing(xStandard)
xRemove =1×31 2 3
许多MATLAB函数,可以忽略缺失值,而不必明确定位,填充,或者先删除它们。例如,如果你计算含有矢量的总和为NaN
值,其结果是为NaN
。但是,您可以直接忽略为NaN
通过使用S在总和'omitnan'
与选项和
功能。
sumNan =总和(xDouble)
sumNan = NaN的
sumOmitnan =总和(xDouble,'omitnan')
sumOmitnan = 10
fillmissing
|不见了
|失踪
|standardizeMissing