主要内容

MATLAB中的缺失数据

处理缺失数据是数据预处理中的一项常见任务。尽管有时缺失值表示数据中有意义的事件,但它们通常表示不可靠或不可用的数据点。无论哪种情况,MATLAB®都有许多处理缺失数据的选项。

创建和组织缺少的数据

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

x=[NaN 1 2 3 4];

您也可以使用丢失的值来表示缺少的数字数据或其他类型的数据,例如日期时间,一串,和绝对的. MATLAB自动转换丢失的值设置为数据的本机类型。

xDouble=[缺少1 2 3 4]
X倍=1×5南1 2 3 4
xDatetime=[缺少日期时间(2014,1:4,1)]
X日期时间=1x5日期时间NaT 2014年1月1日2014年2月1日2014年3月1日2014年4月1日
xString=[缺少“a”“b”“c”“d”]
X字符串=1x5串“a”“b”“c”“d”
xCategorical=[缺少范畴({'类别1''第2类'“第3类”“第4类”})]
X类别=1x5分类<未定义>cat1 cat2 cat3 cat4

数据集可能包含要视为缺失数据的值,但不是MATLAB中的标准MATLAB缺失值,例如. 你可以用标准化函数将这些值转换为该数据类型的标准缺失值。例如,将4视为缺少的双重的价值.

x标准=标准化(xDouble,[4])
X标准=1×5南1 2 3南

假设您希望将缺少的值保留为数据集的一部分,但将它们与其他数据分离开来。几个MATLAB函数使您能够在进一步处理之前控制缺失值的位置。例如,使用'丢失位置'选项与分类要移动的函数到数据的末尾。

xSort=排序(xStandard,'丢失位置','最后一个')
X排序=1×51 2 3楠楠

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

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

例如,如果您在不知情的情况下绘制一个包含价值观不会出现,因为情节函数会忽略它并正常绘制其余的点。

南数据=[1:9南];绘图(1:10,nanData)

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

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

平均数据=平均值(nanData)
平均数据=NaN

一种找到通过使用伊斯南函数,该函数返回一个逻辑数组,指示价值

TF=isnan(南数据)
TF公司=1x10逻辑阵列0 0 0 0 0 0 0 0 0 1

同样地ismissing公司函数返回多个数据类型的数据中缺失值的位置。

TFdouble=ismissing(xDouble)
TF双精度=1x5逻辑阵列1 0 0 0 0
TFdatetime=ismissing(xDatetime)
TFdatetime公司=1x5逻辑阵列1 0 0 0 0

假设您使用的是由具有多种数据类型的变量组成的表或时间表。只需调用ismissing公司,无论其类型如何。

xTable=table(xDouble',xDatetime',xString',xCategorical')
X表格=5×4工作台Var1 Var2 Var3 Var4\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu4\uuuuuuuuuuuuuuuuuuuun NaT2014年1月1日“a”类2014年2月1日“b”类2014年3月1日“c”类2014年4月1日“d”类4
TF=ismissing(x表)
TF公司=5x4逻辑阵列1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

缺少的值可能表示无法用于处理或分析的数据。使用填充缺失用另一个值替换缺少的值,或使用RMM缺失完全删除缺少的值。

xFill=fillmissing(x标准,'常量',0)
xFill公司=1×50 1 2 3 0
xRemove=rmmissing(x标准)
X删除=1×31 2 3

许多MATLAB函数允许您忽略缺失的值,而不必先显式地定位、填充或移除它们。例如,如果计算包含值,结果是. 但是,您可以直接忽略通过使用'南'选项与总和功能。

sumNan=总和(xDouble)
sumNan=南
sumOmitnan=和(xDouble,'南')
sumOmitnan=10

另请参见

|||

相关主题