主要内容

干净的混乱和丢失的数据表

当一个表是混乱和丢失的数据值,你可以清洁表在几个方面。首先,您可以识别丢失的数据通过使用Import工具或使用功能等总结ismissing功能。您标识缺失值之后,可以标准化,填充,或删除缺失值使用standardizeMissing,fillmissing,或rmmissing功能。你可以清理你的桌子进一步重组。您可以使用等功能sortrowsmovevars函数来重新排列表行和变量在适合你的订单。

检查数据文件

检查样本中的数据的以逗号分隔的值(CSV)文件,messy.csv。检查数据的一个方法是使用导入工具。它预览数据并允许您指定如何导入数据。导入工具显示messy.csv有五个列。一些列的文本和其他列数值。

messy.png

文件包含许多不同的缺失数据指标:

  • 空的文本

  • 句点(.)

  • 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

另请参阅

|||||||||

相关的话题