使用缺失数据是数据预处理中的常用任务。虽然有时缺少值在数据中表示有意义的事件,但它们通常代表不可靠或无法使用的数据点。在任何一种情况下,Matlab®都有许多用于处理缺失数据的选项。
MATLAB中缺少值的表单取决于数据类型。例如,数字数据类型如双倍的
用南
(不是一个数字)表示缺失的值。
x = [纳米1 2 3 4];
你也可以使用丢失的
值表示缺少的数字数据或其他类型的数据,例如约会时间
那细绳
, 和分类
。matlab自动转换丢失的
数据的本机类型。
xdouble = [缺少1 2 3 4]
xdouble =.1×5南1 2 3 4
xdatetime = [缺少DateTime(2014,1:4,1)]
xdatetime =1x5 DateTime.NAT 01-JAN-2014 01-FEB-2014 01-MAR-2014 01-APR-2014
xstring = [缺失“一种”“b”“C”“D”]
XString =.1x5字符串<缺失>“a”“b”c“”d“
xcategorical = [缺少分类({'cat1''cat2''cat3''cat4'})]
xcategorical =1x5分类<未定义> CAT1 CAT2 CAT3 CAT4
数据集可能包含要视为缺失数据的值,但不是MATLAB中的标准MATLAB缺失值,例如南
。你可以使用标准造理
函数将这些值转换为数据类型的标准缺失值。例如,将4视为缺失双倍的
附加值南
。
XStandard =标准化(XDOBLE,[4 NAN])
XStandard =1×5NaN 1 2 3 Nan
假设您希望将缺失值作为数据集的一部分保持,但从其余数据中分离它们。几个MATLAB函数使您可以在进一步处理之前控制丢失值的放置。例如,使用'遗漏'
选择与种类
动作搬家南
s到数据的末尾。
xsort = sort(xstandard,'遗漏'那'最后的')
Xsort =.1×51 2 3南楠
即使您在MATLAB中未明确创建缺失值,也可以在导入现有数据或使用数据计算时出现。如果您不知道数据中的缺失值,则后续计算或分析可能会误导。
例如,如果你在不知不觉地绘制一个包含a的向量南
价值,南
没有出现,因为阴谋
功能忽略它并正常绘制剩余点。
nandata = [1:9 nan];情节(1:10,Nandata)
但是,如果您计算数据的平均值,结果是南
。在这种情况下,提前知道数据包含一个更有助于南
,然后选择在计算平均值之前忽略或删除它。
含义=平均值(Nandata)
含义= nan
找到一种方法南
s中的数据是通过使用的isnan.
函数,返回指示任何位置的逻辑阵列南
价值。
tf = isnan(nandata)
tf =1x10逻辑阵列0 0 0 0 0 0 0 0 0 0 1
同样,不见了
函数返回多个数据类型数据中缺失值的位置。
tfdouble = ismissing(xdouble)
tfdouble =1x5逻辑阵列1 0 0 0 0
tfdatetime = ismissing(xdatetime)
tfdatetime =1x5逻辑阵列1 0 0 0 0
假设您正在使用具有多种数据类型的变量组成的表或时间表。您可以找到一个呼叫的所有缺失值不见了
,无论他们的类型如何。
xtable = table(xdouble',xdatetime',xstring',xcategorical')
xtable =.5×4表var1 var2 var3 var4 ____ ______________________ _____________南NAT <缺失> <未定义> <未定义> 1 01-jan-2014“A”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
缺失的值可以表示处理或分析的无法使用的数据。用填充
用另一个值替换缺失的值或使用rmmissing.
完全删除缺失值。
xilless = fillmissing(xstandard,'不变',0)
Xill =.1×50 1 2 3 0
XRemove = rmmissing(XStandard)
Xremove =1×3.1 2 3.
许多MATLAB函数使您能够忽略缺失值,而无需明确定位,填充或首先删除它们。例如,如果您计算包含的向量的总和南
值,结果是南
。但是,你可以直接忽略南
通过使用的总和'omitnan'
选择与和
功能。
Sumnan = Sum(xdouble)
校长= NAN.
sumomitnan = sum(xdouble,'omitnan')
Sumomitnan = 10.