В этом примере показано, как найти, уберите и удалите строки таблицы с недостающими данными.
Пример загрузки данных из текстового файла, с разделителем запятая, messy.csv. Файл содержит много различных индикаторов недостающих данных:
Пустой символьный вектор ('')
период (.)
NA
NaN
-99
Чтобы задать векторы символов, чтобы обработать как пустые значения, используйте 'TreatAsEmpty' аргумент пары "имя-значение" с readtable функция. (Используйте disp функционируйте, чтобы отобразить всю 21 строку, запуская этот пример как live скрипт.)
T = readtable('messy.csv','TreatAsEmpty',{'.','NA'}); disp(T)
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 {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
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});
rowsWithMissing = T(any(TF,2),:);
disp(rowsWithMissing) A B C D E
________ ___ __________ ___ ___
{'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 в числовых переменных, BD, и E.
Уберите данные так, чтобы отсутствующие значения, обозначенные кодом -99 имейте стандартный MATLAB® числовой индикатор отсутствующего значения, NaN.
T = standardizeMissing(T,-99); disp(T)
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 {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,'previous');
disp(T2) 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
{'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, это содержит только строки от T без отсутствующих значений. T3 имеет только 16 строк.
T3 = rmmissing(T); disp(T3)
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'});
disp(T3) 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
{'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, строки сгруппированы сначала 'yes', сопровождаемый 'no'. Затем в A, строки перечислены в алфавитном порядке.
Переупорядочьте таблицу так, чтобы A и C друг рядом с другом.
T3 = T3(:,{'A','C','B','D','E'});
disp(T3) 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
{'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
readtable | summary | ismissing | sortrows | standardizeMissing | rmmissing | fillmissing