Этот пример показывает, как найти, убрать, и удалить строки таблицы с недостающими данными.
Загрузите демонстрационные данные от разделенного от запятой текстового файла, messy.csv
. Файл содержит много различных недостающих индикаторов данных:
Пустой символьный вектор ('')
период (.)
Нет данных
NaN
-99
Чтобы задать векторы символов, чтобы обработать как пустые значения, используйте аргумент в виде пар "имя-значение" 'TreatAsEmpty'
с функцией readtable
.
T = readtable('messy.csv','TreatAsEmpty',{'.','NA'})
T=21×5 table
A B C D E
______ ____ _____ ____ ____
'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 '' 563 563
'pnj5' 463 'no' 463 463
'wnn3' 6 'no' 6 6
'oks9' 23 'yes' 23 23
'wba3' NaN 'yes' NaN 14
⋮
T
является таблицей с 21 строкой и пятью переменными. 'TreatAsEmpty'
только применяется к числовым столбцам в файле и не может обработать числовые литералы, такие как '-99'
.
Просмотрите тип данных, описание, модули и другую описательную статистику для каждой переменной путем создания табличных сводных данных использование функции summary
.
summary(T)
Variables: A: 21x1 cell array of character vectors B: 21x1 double Values: Min -99 Median 14 Max 563 NumMissing 3 C: 21x1 cell array of character vectors D: 21x1 double Values: Min -99 Median 7 Max 563 NumMissing 2 E: 21x1 double Values: Min -99 Median 14 Max 563
Когда вы импортируете данные из файла, значение по умолчанию для readtable
, чтобы считать любые переменные с нечисловыми элементами как массив ячеек из символьных векторов.
Отобразите подмножество строк из таблицы, T
, которые имеют по крайней мере одно отсутствующее значение.
TF = ismissing(T,{'' '.' 'NA' NaN -99}); T(any(TF,2),:)
ans=5×5 table
A B C D E
______ ___ _____ ___ ___
'egh3' NaN 'no' 7 7
'abk6' 563 '' 563 563
'wba3' NaN 'yes' NaN 14
'poj2' -99 'yes' -99 -99
'gry5' NaN 'yes' NaN 21
readtable
заменил '.'
и 'NA'
с NaN
в числовых переменных, B
, D
и E
.
Уберите данные так, чтобы отсутствующие значения, обозначенные кодом -99
, имели стандартный MATLAB® числовой индикатор отсутствующего значения, NaN
.
T = standardizeMissing(T,-99)
T=21×5 table
A B C D E
______ ____ _____ ____ ____
'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 '' 563 563
'pnj5' 463 'no' 463 463
'wnn3' 6 'no' 6 6
'oks9' 23 'yes' 23 23
'wba3' NaN 'yes' NaN 14
⋮
standardizeMissing
заменяет три экземпляра -99
с NaN
.
Составьте новую таблицу, T2
, и замените отсутствующие значения на значения из предыдущих строк таблицы. fillmissing
обеспечивает много способов заполнить отсутствующие значения.
T2 = fillmissing(T,'previous')
T2=21×5 table
A B C D E
______ ____ _____ ____ ____
'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
⋮
Составьте новую таблицу, T3
, который содержит только строки от T
без отсутствующих значений.
T3 = rmmissing(T)
T3=16×5 table
A B C D E
______ ____ _____ ____ ____
'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
, и затем видом в порядке возрастания A
.
T3 = sortrows(T2,{'C','A'},{'descend','ascend'})
T3=21×5 table
A B C D E
______ ____ _____ ____ ____
'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
⋮
В C
строки сгруппированы сначала 'yes'
, сопровождаемым 'no'
. Затем в A
, строки перечислены в алфавитном порядке.
Переупорядочьте таблицу так, чтобы A
и C
были друг рядом с другом.
T3 = T3(:,{'A','C','B','D','E'})
T3=21×5 table
A C B D E
______ _____ ____ ____ ____
'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
⋮
fillmissing
| ismissing
| readtable
| rmmissing
| sortrows
| standardizeMissing
| сводные данные