干净的混乱和缺失数据表

这个例子显示了如何查找,干净,缺少数据删除表中的行。

装入样本数据

从以逗号分隔的文本文件中加载样本数据,messy.csv。该文件包含许多不同的缺失数据指标:

  • 空字符向量(“”)

  • 句点(。)

  • NA

  • 为NaN

  • -99

要指定字符向量治疗为空值,可以使用'TreatAsEmpty'用名称 - 值对参数readtable功能。(使用DISP函数来显示所有21列,运行这个例子是一个活的剧本时也是如此。)

T = readtable('messy.csv''TreatAsEmpty'{'''NA'});DISP(T)
一种乙CdË________ ____ __________ ____ ____ {'afe1'} 3 {'yes' } 3 3 {'egh3'} NaN {'no' } 7 7 {'wth4'} 3 {'yes' } 3 3 {'atn2'} 23 {'no' } 23 23 {'arg1'} 5 {'yes' } 5 5 {'jre3'} 34.6 {'yes' } 34.6 34.6 {'wen9'} 234 {'yes' } 234 234 {'ple2'} 2 {'no' } 2 2 {'dbo8'} 5 {'no' } 5 5 {'oii4'} 5 {'yes' } 5 5 {'wnk3'} 245 {'yes' } 245 245 {'abk6'} 563 {0x0 char} 563 563 {'pnj5'} 463 {'no' } 463 463 {'wnn3'} 6 {'no' } 6 6 {'oks9'} 23 {'yes' } 23 23 {'wba3'} NaN {'yes' } NaN 14 {'pkn4'} 2 {'no' } 2 2 {'adw3'} 22 {'no' } 22 22 {'poj2'} -99 {'yes' } -99 -99 {'bas8'} 23 {'no' } 23 23 {'gry5'} NaN {'yes' } NaN 21

Ť是21行和五个变量表。'TreatAsEmpty'仅适用于数字列在文件中,并不能处理指定为文本数值,如'-99'

汇总表

通过使用创建表摘要视图的数据类型,描述,单位和其他描述性统计每个变量摘要功能。

概要(T)
变量:A:字符向量B的21X1单元阵列:21X1双值:最小-99中值14最大563 NumMissing 3 C:字符向量d的21X1单元阵列:21X1双值:最小-99平均7最多563 NumMissing 2 E:21X1双值:最小-99中位数14最大563

当您从文件导入数据,默认是readtable读取与非数字元素作为字符向量的单元阵列的任何变量。

查找缺失值的行

从表中显示的行子集,Ť,即至少有一个缺失值。

TF = ISMISSING(T,{“”'''NA'为NaN -99});rowsWithMissing = T(任何(TF,2),:);DISP(rowsWithMissing)
一种乙CdË________ ___ __________ ___ ___ {'egh3'} NaN {'no' } 7 7 {'abk6'} 563 {0x0 char} 563 563 {'wba3'} NaN {'yes' } NaN 14 {'poj2'} -99 {'yes' } -99 -99 {'gry5'} NaN {'yes' } NaN 21

readtable更换'''NA'为NaN在数值变量,dË

替换缺失值指标

清理数据,以便遗漏值表示的代码-99有标准的MATLAB®数字缺失值指标,为NaN

T = standardizeMissing(T,-99);DISP(T)
一种乙CdË________ ____ __________ ____ ____ {'afe1'} 3 {'yes' } 3 3 {'egh3'} NaN {'no' } 7 7 {'wth4'} 3 {'yes' } 3 3 {'atn2'} 23 {'no' } 23 23 {'arg1'} 5 {'yes' } 5 5 {'jre3'} 34.6 {'yes' } 34.6 34.6 {'wen9'} 234 {'yes' } 234 234 {'ple2'} 2 {'no' } 2 2 {'dbo8'} 5 {'no' } 5 5 {'oii4'} 5 {'yes' } 5 5 {'wnk3'} 245 {'yes' } 245 245 {'abk6'} 563 {0x0 char} 563 563 {'pnj5'} 463 {'no' } 463 463 {'wnn3'} 6 {'no' } 6 6 {'oks9'} 23 {'yes' } 23 23 {'wba3'} NaN {'yes' } NaN 14 {'pkn4'} 2 {'no' } 2 2 {'adw3'} 22 {'no' } 22 22 {'poj2'} NaN {'yes' } NaN NaN {'bas8'} 23 {'no' } 23 23 {'gry5'} NaN {'yes' } NaN 21

standardizeMissing取代的三个实例-99为NaN

创建一个新表,T2,并替换从表中的前一个行的值缺失值。fillmissing提供了多种方式来填补缺失值。

T2 = fillmissing(T,'以前');DISP(T2)
一种乙CdË________ ____ _______ ____ ____ {'afe1'} 3 {'yes'} 3 3 {'egh3'} 3 {'no' } 7 7 {'wth4'} 3 {'yes'} 3 3 {'atn2'} 23 {'no' } 23 23 {'arg1'} 5 {'yes'} 5 5 {'jre3'} 34.6 {'yes'} 34.6 34.6 {'wen9'} 234 {'yes'} 234 234 {'ple2'} 2 {'no' } 2 2 {'dbo8'} 5 {'no' } 5 5 {'oii4'} 5 {'yes'} 5 5 {'wnk3'} 245 {'yes'} 245 245 {'abk6'} 563 {'yes'} 563 563 {'pnj5'} 463 {'no' } 463 463 {'wnn3'} 6 {'no' } 6 6 {'oks9'} 23 {'yes'} 23 23 {'wba3'} 23 {'yes'} 23 14 {'pkn4'} 2 {'no' } 2 2 {'adw3'} 22 {'no' } 22 22 {'poj2'} 22 {'yes'} 22 22 {'bas8'} 23 {'no' } 23 23 {'gry5'} 23 {'yes'} 23 21

删除缺失值的行

创建一个新表,T3,只包含从行Ť没有缺失值。T3只有16行。

T3 = rmmissing(T);DISP(T3)
一种乙CdË________ ____ _______ ____ ____ {'afe1'} 3 {'yes'} 3 3 {'wth4'} 3 {'yes'} 3 3 {'atn2'} 23 {'no' } 23 23 {'arg1'} 5 {'yes'} 5 5 {'jre3'} 34.6 {'yes'} 34.6 34.6 {'wen9'} 234 {'yes'} 234 234 {'ple2'} 2 {'no' } 2 2 {'dbo8'} 5 {'no' } 5 5 {'oii4'} 5 {'yes'} 5 5 {'wnk3'} 245 {'yes'} 245 245 {'pnj5'} 463 {'no' } 463 463 {'wnn3'} 6 {'no' } 6 6 {'oks9'} 23 {'yes'} 23 23 {'pkn4'} 2 {'no' } 2 2 {'adw3'} 22 {'no' } 22 22 {'bas8'} 23 {'no' } 23 23

T3包含16行和五个变量。

整理数据

排序的行T3按降序排列C,然后升序排序由一种

T3 =调用sortRows(T2,{'C''一种'},{“降序”“登高”});DISP(T3)
一种乙CdË________ ____ _______ ____ ____ {'abk6'} 563 {'yes'} 563 563 {'afe1'} 3 {'yes'} 3 3 {'arg1'} 5 {'yes'} 5 5 {'gry5'} 23 {'yes'} 23 21 {'jre3'} 34.6 {'yes'} 34.6 34.6 {'oii4'} 5 {'yes'} 5 5 {'oks9'} 23 {'yes'} 23 23 {'poj2'} 22 {'yes'} 22 22 {'wba3'} 23 {'yes'} 23 14 {'wen9'} 234 {'yes'} 234 234 {'wnk3'} 245 {'yes'} 245 245 {'wth4'} 3 {'yes'} 3 3 {'adw3'} 22 {'no' } 22 22 {'atn2'} 23 {'no' } 23 23 {'bas8'} 23 {'no' } 23 23 {'dbo8'} 5 {'no' } 5 5 {'egh3'} 3 {'no' } 7 7 {'pkn4'} 2 {'no' } 2 2 {'ple2'} 2 {'no' } 2 2 {'pnj5'} 463 {'no' } 463 463 {'wnn3'} 6 {'no' } 6 6

C,行被第一分组通过'是', 其次是'没有'。然后,在一种,该行按字母顺序排列。

重新排序表格,使得一种C是彼此相邻。

T3 = T3(:,{'一种''C''B''d''E'});DISP(T3)
一种C乙dË________ _______ ____ ____ ____ {'abk6'} {'yes'} 563 563 563 {'afe1'} {'yes'} 3 3 3 {'arg1'} {'yes'} 5 5 5 {'gry5'} {'yes'} 23 23 21 {'jre3'} {'yes'} 34.6 34.6 34.6 {'oii4'} {'yes'} 5 5 5 {'oks9'} {'yes'} 23 23 23 {'poj2'} {'yes'} 22 22 22 {'wba3'} {'yes'} 23 23 14 {'wen9'} {'yes'} 234 234 234 {'wnk3'} {'yes'} 245 245 245 {'wth4'} {'yes'} 3 3 3 {'adw3'} {'no' } 22 22 22 {'atn2'} {'no' } 23 23 23 {'bas8'} {'no' } 23 23 23 {'dbo8'} {'no' } 5 5 5 {'egh3'} {'no' } 3 7 7 {'pkn4'} {'no' } 2 2 2 {'ple2'} {'no' } 2 2 2 {'pnj5'} {'no' } 463 463 463 {'wnn3'} {'no' } 6 6 6

也可以看看

||||||

相关话题