Пропущенные данные
В реальных данных часто не все ячейки заполнены. Например, ученик не сдал работу, датчик не передал измерение, пользователь не указал возраст, а часть данных потерялась при выгрузке из другой программы.
Такие пустые места называют пропусками. В CSV пропуском может быть пустая ячейка или значение NA. DataFrame хранит такой элемент как отсутствующее значение, а не как строку "NA".
С такими данными всё равно приходится работать: иногда строки с пропусками удаляют, иногда пропуски заполняют, а иногда просто не учитывают в конкретном вычислении. Главное — заметить их и решить, что с ними делать.
Посмотреть пропуски
Заголовок раздела «Посмотреть пропуски»MissingCount показывает число пропусков в одном столбце, а MissingCounts строит таблицу по всем столбцам.
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Имя,Возраст,Балл Анна,14,91 Борис,,76 Вера,14,NA Глеб,15,68 ''');
Println('Пропусков в столбце Возраст:', df.MissingCount('Возраст')); Println('Пропусков в столбце Балл:', df.MissingCount('Балл'));
df.MissingCounts.Print;end.Проверить значение в строке
Заголовок раздела «Проверить значение в строке»В фильтрах удобно проверять конкретную ячейку через IsValid.
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Имя,Возраст,Балл Анна,14,91 Борис,,76 Вера,14,NA Глеб,15,68 ''');
df.Filter(row -> row['Балл'].IsValid).Print;end.row['Балл'].IsValid означает, что в этой строке в столбце Балл есть настоящее значение.
Удалить строки с пропусками
Заголовок раздела «Удалить строки с пропусками»DropMissing удаляет строки, где есть хотя бы один пропуск.
uses MLABC;
begin var df := DataFrame.FromCsvText(''' Имя,Возраст,Балл Анна,14,91 Борис,,76 Вера,14,NA Глеб,15,68 ''');
df.DropMissing.Print;end.Если важны только некоторые столбцы, укажите их явно.
df.DropMissing(['Балл']).Print;Такой вариант удалит только строки, где пропущен Балл, и не будет учитывать пропуски в других столбцах.
Заполнение пропусков
Заголовок раздела «Заполнение пропусков»На уровне DataFrame обычно достаточно найти или удалить пропуски. Для задач машинного обучения пропуски чаще заполняют в разделе подготовки данных с помощью Imputer.
Например, Imputer может заменить пропущенные числовые значения средним, медианой или другим правилом.
Что важно помнить
Заголовок раздела «Что важно помнить»NAи пустая ячейка считаются пропущенными значениями.MissingCountсчитает пропуски в одном столбце.MissingCountsпоказывает пропуски по всей таблице.DropMissingвозвращает новыйDataFrame.- Перед сравнением значения можно проверить
row['Столбец'].IsValid.