Работа с данными
В процессе анализа неструктурированных данных мы проходим несколько шагов:
- Формулируем вопрос, на который необходимо ответить с помощью данных;
- Подготавливаем данные так, чтобы они отвечали на поставленный вопрос;
- Проводим анализ данных, т.е. получаем ответ на заданный вопрос из массива данных;
- Визуализируем данные;
- Делаем выводы.
Рассмотрим подробнее каждые этапы.
Шаг 1. Формулировка вопроса помогает: определить какие данные нужны, придерживаться выбранного направления анализа, снизить риск отклонения от поставленной цели. Ошибка, допущенная на первом этапе, может привести к потере времени и «обнулить» результат работы всей команды.
Шаг 2. Подготовка данных практически всегда является сложным и трудоемким процессом, т.к. требует извлечения данных из исходных источников, их преобразования для работы и очистки от «грязных» данных. Мы извлекаем данные с web-сайтов, социальных сетей, из готовых баз данных, CSV-файлов, таблиц Excel. Подготовленные данные должны быть правильно отформатированы, учтены все отклонения (например, чрезмерно отклоняющиеся данные).
Для работы с данными мы используем инструмент Python, а именно, некоторые методы, которые могут применять в работе не только IT специалисты, но и аудиторы, делающие только первые шаги в программировании на этом языке.
Например, в наших выборках мы часто встречаем пропущенные значения. Пропуски могут возникать в результате объединения двух файлов с данными, в которых названия меток индексов и столбцов не совпадают, или значение переменной нам в данный момент неизвестно, или данные, полученные с внешних сайтов — неполные.
Для поиска пропусков в значениях (значения NaN в объекте DataFrame) мы используем библиотечный метод. isnull(). Значение «True» в наших данных после применения. isnull() означает, что в этой позиции элемент NaN.
Чтобы определить, что элемент не является пропущенным значением можно применить. notnull().
Чтобы вычислить количество NaN, мы используем метод. sum(), который принимает значение True =1, False=0.
Кроме того, можно воспользоваться методом. count(): для объекта Series метод возвращает число непропущенных значений. Для DataFrame считает количество непропущенных значений в каждом столбце.
Также для обработки пропущенных данных мы используем простое их удаление из нашей выборки. В библиотеке Pandas есть для этого несколько методов. Один из них — это фильтрация по условию с использование результатов ранее примененных. isnull() и. notnull(). Например, чтобы отобрать в столбце 3 нашей DataFrame (df) непропущенные значения используем код: df.c3[df.c3.notnull()], который извлечет все значения столбца 3, кроме NaN. Кроме того, мы используем метод. dropna(), который удаляет из объекта DataFrame строки, содержащие значения NaN. Для удаления только строк, в которых все значения неопределенны, используем параметр how = ‘all’: df.dropna(how=’all’). C помощью параметра how = ‘any’, удаляем столбцы, где есть хотя бы одно значение NaN. А с помощью параметра thresh задаем необходимый минимум заполненных значений, для того чтобы не удалять строки столбцы, в которых есть пропуски.
В некоторых случаях пропущенные значения мы заполняем определенным значением, используя метод. fillna(). Пропущенные значения можно заполнить константой, или последним непропущенным значением как в прямом:. fillna(method = «ffill”), так и обратном порядке:. fillna(method = ‘bfill»). Или заполняем с помощью индексов: fill_values. Кроме того, мы применяем метод интерполяции пропущенных значений. interpolate().
Шаг 3. Анализ подготовленных данных мы осуществляем с помощью методов классификации, кластеризации и обучения с подкреплением.
Каждый из этих инструментов мы используем в следующих случаях:
— метод классификации, если нами заранее определено в какие группы будем объединять данные (ответы «да»/«нет»);
— метод кластеризации, когда группы заранее неизвестны. Например, будем делать оценку возрастной категории клиента, давшего тот или иной ответ;
— метод обучения с подкреплением, когда не требуется выполнять точно заданные действия, но можно проводить исследования и обучаться лучшим методам решения задач.
Шаг 4. Переходя к визуализации данных, мы используем «две стороны одной монеты»: с одной стороны, мы визуализируем данные, чтобы изучить их, а с другой представить окружающим наши выводы и гипотезы. Визуальный анализ на этапе обработки данных помогает увидеть аномалии в данных, сделать обобщения результатов, выявить тенденции поведения групп данных и проверить отвечают ли наши данные на изначально заданный вопрос. Для этого мы используем пакет Seaborn для программ Python и ggplot2, и Shiny для R.
Визуализация данных для презентации результатов окружающим осуществляется с помощью программ PowerBI и Tableau. Данный этап также совмещает в себе подготовку выводов.
Подводя итог, хочется сказать, что часто методы работы с данными, освоенные ранее и которые нам нравятся, могут оказаться неэффективными. Привыкнув работать с Excel, не нужно бояться осваивать языки программирования Python или R. Ведь использование указанных выше программных продуктов помогают значительно ускорить процесс обработки данных.