干净的混乱和丢失的数据表
当一个表是混乱和丢失的数据值,你可以清洁表在几个方面。首先,您可以识别丢失的数据通过使用Import工具或使用功能等总结
和ismissing
功能。您标识缺失值之后,可以标准化,填充,或删除缺失值使用standardizeMissing
,fillmissing
,或rmmissing
功能。你可以清理你的桌子进一步重组。您可以使用等功能sortrows
或movevars
函数来重新排列表行和变量在适合你的订单。
检查数据文件
检查样本中的数据的以逗号分隔的值(CSV)文件,messy.csv
。检查数据的一个方法是使用导入工具。它预览数据并允许您指定如何导入数据。导入工具显示messy.csv
有五个列。一些列的文本和其他列数值。
文件包含许多不同的缺失数据指标:
空的文本
句点(.)
NA
南
-99年
导入工具自动识别一些缺失的数据指标,如南
在数字列和空的文本文本列。
该工具还强调其他指标如空的文本、,NA
这发生在列B
。这些值不是标准缺失值。但是作为非数字值在一个数字列,很可能他们是代表缺失值。导入数据时,您可以指定这些值也应该像对待南
年代。
的价值-99年
也可以作为指示缺失值。否则由数字数据时积极的价值观,有些人有时指定单个负值为缺失的数据。如果一个号码等-99年
代表中缺失的数据表,然后您必须指定它是一个缺失值,当你清理你的桌子。
进口数据如表
您可以导入数据到MATLAB®工作区导入工具。但是您还可以使用readtable
函数来从文件读取数据,并将其导入表。
导入的数据messy.csv
使用readtable
函数。表变量文本数据读入字符串数组,使用“TextType”
名称-值参数。治疗数值指定的非数字值的列作为缺失值,使用“TreatAsMissing”
名称-值参数。表变量B
,D
,E
,readtable
进口空的文本,。
,NA
作为南
值。然而,值-99年
因为他们是数字维持不变。
同时,readtable
对待一个
和C
为文本。所以,空的文本列到失踪的字符串,它显示为<失踪>
。
messyTable = readtable (“messy.csv”,“TextType”,“字符串”,“TreatAsMissing”,(“。”,“NA”])
messyTable =21日×5表A B C D E ______ _____ _____上“afe1”南“是的”3 3“egh3”南“不”7 7“wth4”-99“是”-99 -99“atn2”23.7 <失踪>南23.7“__arg1”南“是的”5南“jre3”34.6“是”34.6 - 34.6“wen9”234“是”234 234“ple2”2“不”2“dbo8”“不”5 5“oii4”5“是的”5 5“wnk3”245“是”245 245“abk6”563“不”563 563”pnj5“463 463 463“wnn3”“不”“不”6 6“oks9”23“是的”23日23“wba3”14“是的”14 14⋮
视图的总结表
观点的总结表,使用总结
函数。为每个表变量,它显示了数据类型和其他描述性统计。例如,总结
显示每个数值变量的缺失值的数量messyTable
。
总结(messyTable)
变量:答:21 x1字符串B: 21 x1双重价值:最小-99中位数22.5最大563 NumMissing 3 C: 21 x1字符串D: 21 x1双重价值:-99分钟563 NumMissing马克斯2 E中位数:21 x1双重价值:最小-99中位数21.5最大563 NumMissing 1
找到与缺失值的行
找到的行messyTable
至少有一个缺失值,使用ismissing
函数。如果你有非标准缺失值数据,如-99年
,您可以指定它的标准缺失值。
的输出ismissing
是一个逻辑阵列识别的元素呢messyTable
缺失值。
missingElements = ismissing (messyTable{字符串(失踪),南-99})
missingElements =21 x5逻辑阵列0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0⋮
创建一个逻辑标识有缺失值的行向量,使用任何
函数。
rowsWithMissingValues =任何(missingElements, 2)
rowsWithMissingValues =21 x1逻辑阵列1 1 1 1 1 0 0 0 0 0⋮
索引表,只返回有缺失值的行,使用逻辑向量rowsWithMissingValues
。
missingValuesTable = messyTable (rowsWithMissingValues:)
missingValuesTable =6×5表A B C D E _____ _____ ___上“afe1”南“是的”3 3“egh3”南“不”7 7“wth4”-99“是”-99 -99“atn2”23.7 <失踪>南23.7“__arg1”南“是的”5南“gry5”21“是的”南21
填补缺失值
清洁表中缺失值的策略之一是用更有意义的值。你可以代替标准缺失的值插入标准的缺失值。你可以填补缺失值和调整值。例如,可以填补缺失值和其最近的邻居,或表变量的平均值。
在这个例子中,-99年
是一个非标准的值指示一个缺失值。替换的实例-99年
与标准缺失值,使用standardizeMissing
函数。南
是标准的缺失值单-和双精度浮点数字数组。
messyTable = standardizeMissing (messyTable, -99)
messyTable =21日×5表A B C D E ______ _____ _____上“afe1”南“是的”3 3“egh3”南“不”7 7“wth4”南“是的”南南“atn2”23.7 <失踪>南23.7“__arg1”南“是的”5南“jre3”34.6“是”34.6 - 34.6“wen9”234“是”234 234“ple2”2“不”2“dbo8”“不”5 5“oii4”5“是的”5 5“wnk3”245“是”245 245“abk6”563“不”563 563”pnj5“463 463 463“wnn3”“不”“不”6 6“oks9”23“是的”23日23“wba3”14“是的”14 14⋮
来填补缺失值,使用fillmissing
函数。它提供了许多方法,填补缺失值。例如,返回一个新表,filledTable
与最近的邻居,你填补缺失值不缺失值。
filledTable = fillmissing (messyTable,“最近的”)
filledTable =21日×5表A B C D E ______ _____ _____上“afe1”23.7“是”3 3“egh3”23.7“不”7 7“wth4”23.7“是”7 23.7“atn2”23.7“是”23.7“__arg1”34.6“是”5“jre3”34.6“是”34.6 34.6 34.6“wen9”234“是”234 234“ple2”2“不”2“dbo8”“不”5 5“oii4”5“是的”5 5“wnk3”245“是”245 245“abk6”563“不”563 563”pnj5“463 463 463“wnn3”“不”“不”6 6“oks9”23“是的”23日23“wba3”14“是的”14 14⋮
删除与缺失值的行
清洁表中缺失值的另一个策略是删除的行。
要删除有缺失值的行,可以使用rmmissing
函数。
remainingTable = rmmissing (messyTable)
remainingTable =15×5表A B C D E ______ _____ _____上“jre3”34.6“是”34.6 - 34.6“wen9”234“是”234 234“ple2”2“不”2“dbo8”“不”5 5“oii4”5“是的”5 5“wnk3”245“是”245 245“abk6”563“不”563 563”pnj5“463 463 463“wnn3”“不”“不”6 6“oks9”23“是的”23日23“wba3”14“是的”14日14“pkn4”2“不”2“adw3”22“不”22日22“poj2”34.6“是”34.6 - 34.6“bas8”23日“不”23日23
排序表行
一旦你打扫一个表,你可以其他方式组织。例如,您可以把一个表的行值在一个或多个变量。
对行排序在第一个变量的值,一个
。
sortedTable = sortrows (remainingTable)
sortedTable =15×5表A B C D E ______ _____ _____上“abk6”563“不”563 563“adw3”22日22“bas8”“不”22日23日“不”23日23“dbo8”“不”5 5“jre3”34.6“是”34.6 - 34.6“oii4”5“是的”5 5“oks9”23“是的”23日23“pkn4”2“不”2“ple2”2“不”2“pnj5”463“不”463 463“poj2”34.6“是”34.6 - 34.6“wba3”14“是的”14日14“wen9”234“是”234 234“wnk3”245“是”245 245“wnn3”6“不”6 6
降序排列的行C
,然后按升序排序一个
。
sortedBy2Vars = sortrows (remainingTable, (“C”,“一个”]、[“下”,“提升”])
sortedBy2Vars =15×5表A B C D E ______ _____ _____上“jre3”34.6“是”34.6 - 34.6“oii4”5“是的”5 5“oks9”23“是的”23日23“poj2”34.6“是”34.6 - 34.6“wba3”14“是的”14日14“wen9”234“是”234 234“wnk3”245“是”245 245“abk6”563“不”563 563“adw3”22日22“bas8”“不”22日23日“不”23日23“dbo8”“不”5 5“pkn4”2“不”2“ple2”2“不”2“pnj5”463“不”463 463“wnn3”6“不”6 6
排序的C
,第一行分组“是的”
,紧随其后的是“不”
。然后排序一个
按字母顺序列出,行。
表,以便重新排序一个
和C
使用,相邻吗movevars
函数。
sortedRowsAndMovedVars = movevars (sortedBy2Vars,“C”,“后”,“一个”)
sortedRowsAndMovedVars =15×5表C B D E _____ _____ _____上“jre3”“是的”34.6 34.6 34.6“oii4”“是的”5 5 5“oks9”“是的”23日23日23“poj2”“是的”34.6 34.6 34.6“wba3”“是的”14十四14“wen9”“是”234 234 234“wnk3”“是”245 245 245“abk6”“不”563 563 563“adw3”“不”22日22日22日“bas8”“不”23日23日23“dbo8”“不”5 5 5“pkn4”“不”2 2 2“ple2”“不”2 2 463 463 463“pnj5”“不”“wnn3”“不”6 6 6
另请参阅
表
|ismissing
|standardizeMissing
|fillmissing
|rmmissing
|sortrows
|movevars
|导入工具
|readtable
|总结