Из моего ограниченного увлечения наукой данных с использованием R я понял, что очистка плохих данных является очень важной частью подготовки данных для анализа.
Существуют ли передовые практики или процессы для очистки данных перед их обработкой? Если да, существуют ли какие-либо автоматизированные или полуавтоматические инструменты, которые реализуют некоторые из этих передовых методов?
r
data-cleaning
Джей Годсе
источник
источник
Ответы:
R содержит некоторые стандартные функции для манипулирования данными, которые могут быть использованы для очистки данных, в базовом пакете (
gsub
,transform
и т.д.), а также в различные пакеты сторонних разработчиков , такие как stringr , перекроить / reshape2 и plyr / dplyr , Примеры и лучшие практики использования этих пакетов и их функций описаны в следующей статье: http://vita.had.co.nz/papers/tidy-data.pdf .Кроме того, R предлагает некоторые пакеты специально сосредоточены на очистке и преобразования данных:
Комплексный и согласованный подход к очистке данных в R, включая примеры и использование правил редактирования и дедуктивных пакетов, а также описание рабочего процесса ( каркаса ) очистки данных в R, представлен в следующей статье, которую я настоятельно рекомендую: http : //cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf .
источник
dplyr
, что это оптимизированная перефразировка некоторыхplyr
инструментов иdata.table
совершенно другой подход к манипулированию данными. Оба Хедли Уикхем.dplyr
пакета, но неdata.table
одного.С моей точки зрения, этот вопрос подходит для двухэтапного ответа. Первая часть, назовем ее мягкой программной обработкой , может рассматриваться как использование различных алгоритмов интеллектуального анализа данных для предварительной обработки данных таким образом, что это делает их пригодными для дальнейшего анализа. Обратите внимание, что это может быть сам анализ, если цель достаточно проста, чтобы ее можно было решить одним выстрелом.
Вторая часть, жесткая предварительная обработка , на самом деле предшествует любому другому процессу и может рассматриваться как использование простых инструментов или сценариев для очистки данных, выбора конкретного содержимого для обработки. Для решения этой проблемы POSIX предоставляет нам замечательный набор волшебных инструментов, которые можно использовать для создания кратких и очень мощных сценариев предварительной обработки.
Например, для людей, которые имеют дело с данными, поступающими с социальных сайтов (твиттер, фейсбук, ...), поиск данных обычно приводит к файлам с очень специфическим форматом - хотя и не всегда хорошо структурированным, так как они могут содержать пропущенные поля и т. Д. , В этих случаях простой
awk
сценарий может очистить данные, создав верный входной файл для последующей обработки. Из множества волшебном, можно также отметитьgrep
,sed
,cut
,join
,paste
,sort
, и все множество других инструментов.В случае, если в простом исходном файле слишком много мелочей, может также потребоваться создать набор методов для очистки данных. В таких случаях обычно лучше использовать языки сценариев (кроме оболочек), такие как Python, Ruby и Perl. Это позволяет создавать API для выбора определенных данных очень простым и многократно используемым способом. Такие API иногда публикуются их авторами, такими как IMDbPY , Stack Exchange API и многими другими.
Итак, отвечая на вопрос: есть ли лучшие практики? Обычно это зависит от вашей задачи. Если вы всегда будете иметь дело с одним и тем же форматом данных, обычно лучше написать организованный скрипт для его предварительной обработки; тогда как, если вам просто нужна простая и быстрая очистка некоторого набора данных, положитесь на инструменты POSIX для кратких сценариев оболочки, которые будут выполнять всю работу намного быстрее, чем сценарий Python, или около того. Поскольку очистка зависит как от набора данных, так и от ваших целей, сложно все уже сделать. Тем не менее, существует множество API, которые ставят вас на полпути к решению проблемы.
источник
grep
использует базовое регулярное выражение POSIX по умолчанию и допускает расширенное регулярное выражение POSIX при запуске какgrep -E
, и для PCRE при запуске какgrep -P
.Одна из причин того, что очистка данных редко бывает полностью автоматизированной, заключается в том, что для определения того, что означает «очистить» с учетом вашей конкретной проблемы, методов и целей, требуется так много суждений.
Это может быть так же просто, как вложение значений для любых пропущенных данных, или это может быть так же сложно, как диагностика ошибок ввода данных или ошибок преобразования данных из предыдущих автоматизированных процессов (например, кодирование, цензура, преобразование). В этих двух последних случаях данные выглядят хорошо по внешнему виду, но они действительно ошибочны. Такой диагноз часто требует ручного анализа и проверки, а также внеполосной информации, такой как информация об источниках данных и методах, которые они использовали.
Кроме того, некоторые методы анализа данных работают лучше, когда ошибочные или отсутствующие данные оставлены пустыми (или нет), а не вменены или заданы значения по умолчанию. Это верно, когда есть явные представления неопределенности и невежества, такие как функции Веры Демпстера-Шафера.
Наконец, полезно иметь специальные диагностические данные и метрики для процесса очистки. Пропущены или ошибочно распределены случайные значения или они сконцентрированы каким-либо образом, что может повлиять на результат анализа. Полезно проверить эффекты альтернативных стратегий или алгоритмов очистки, чтобы увидеть, влияют ли они на конечные результаты.
Учитывая эти опасения, я очень подозрительно отношусь к любому методу или процессу, который рассматривает очистку данных поверхностным, кавалерным или полностью автоматическим способом. В этих деталях скрывается много дьяволов, и стоит уделить им серьезное внимание.
источник
Об автоматической очистке: вы действительно не можете очистить данные автоматически, потому что количество ошибок и определение ошибки часто зависят от данных. Например: ваш столбец «Доход» может содержать отрицательные значения, которые являются ошибкой - вы должны что-то сделать с делами. С другой стороны, столбец «ежемесячные сбережения» может содержать отрицательные значения.
Такие ошибки сильно зависят от предметной области - поэтому, чтобы найти их, вы должны обладать знанием предметной области, чем-то, в чем люди превосходят, автоматизированных процессов не так много.
Где вы можете и должны автоматизировать повторные проекты. Например, отчет, который должен составляться ежемесячно. Если вы обнаружите ошибки, вам следует запустить какой-то автоматизированный процесс, который может обнаружить ошибки такого рода в последующие месяцы, освобождая ваше время.
источник
Я думаю, что не существует универсального метода «очистки» данных перед тем, как проводить собственное исследование. С другой стороны, я стремлюсь сделать как можно больше воспроизводимых исследований . Проводя воспроизводимые исследования, если вы использовали методы очистки с ошибками или с плохими параметрами / допущениями, это может быть обнаружено другими.
Есть хороший пакет knitr R, который очень помогает в воспроизводимых исследованиях.
Конечно, не все исследования могут быть полностью воспроизведены (например, прямые данные Twitter), но, по крайней мере, вы можете легко документировать этапы очистки, форматирования и предварительной обработки.
Вы можете проверить мои оценки, подготовленные для курса «Воспроизводимые исследования» на Coursera .
источник
OpenRefine (ранее Google Refine) - отличный инструмент, с помощью которого вы можете в интерактивном режиме выполнять очистку и преобразование данных. Ваш окончательный вывод может быть экспортирован во множество стандартных форматов (json, csv) или в любой другой пользовательский формат (например, вики).
Точные дубликаты могут быть обработаны в OpenRefine путем сортировки + с помощью функции «очистки вниз». Также он имеет приблизительную (нечеткую) кластеризацию, которая позволяет группировать похожие дубликаты, такие как названия компаний или адреса. Одна только эта особенность делает это удивительным.
источник
Целый курс посвящен этому в Coursera. Возможно, вы захотите ознакомиться с методами, которые они упоминают, и важная часть состоит в том, чтобы знать, когда что использовать.
https://www.coursera.org/learn/data-cleaning
Всегда лучше делать это вручную, а не автоматизировать, так как каждый набор данных имеет свои проблемы и проблемы, и не все шаги применимы ко всем наборам данных.
источник