Исследовательский анализ данных (EDA) является важным первым шагом в большинстве проектов по науке о данных и часто включает в себя выполнение одних и тех же шагов для характеристики набора данных (например, поиск типов данных, отсутствующая информация, распределение значений, корреляции и т. д.). Одной из последних является новая библиотека Python с открытым исходным кодом под названием Sweetviz.
После установки Sweetviz (с помощью pip install sweetviz) просто загрузите фреймы данных pandas, как обычно, а затем вызовите analysis(), compare() или compare_intra().
импортировать сладкое, а именно
импортировать панд как pd
поезд = pd.read_csv("train.csv")
тест = pd.read_csv("test.csv")
Теперь у нас есть 2 фрейма данных (обучающий и тестовый), и мы хотели бы проанализировать целевое значение «Выживший». Я хочу отметить, что в этом случае мы заранее знаем имя целевого столбца, но указывать целевой столбец по-прежнему необязательно. Мы можем сгенерировать отчет с помощью этой строки кода:
my_report = sweetviz.compare([поезд, "Поезд"], [тест, "Тест"], "Выжил")
Запуск этой команды выполнит анализ и создаст объект отчета. Чтобы получить результат, просто используйте команду show_html():
my_report.show_html("Report.html") # Без указания имени файла по умолчанию будет SWEETVIZ_REPORT.html
Общая сводка
Сводка показывает нам характеристики двух фреймов данных рядом. Мы можем сразу определить, что тестовый набор примерно вдвое меньше обучающего набора, но содержит ту же функциональность. Эта легенда внизу показывает нам, что тренировочный набор содержит целевую переменную «Выжил», а тестовый набор — нет.
Обратите внимание, что Sweetviz сделает наилучшую оценку, чтобы определить тип данных каждого столбца, между числовым, категорией/логическим и текстовым.
Ассоциации
Этот график представляет собой композицию изображений из Drazen Zaric: Better Heatmaps and Correlation Matrix Plots in Python и концепций из Shaked Zychlinski: The Search for Categorical Correlation.
По сути, в дополнение к отображению традиционных числовых корреляций, он объединяет на одном графике как корреляция числовые, но и коэффициент неопределенности (для категориально-категориальных) и коэффициент корреляции (для категориально-числовых). Квадраты представляют собой переменные, связанные с категориальными характеристиками, а кружки представляют числовые корреляции. Обратите внимание, что тривиальная диагональ оставлена пустой для ясности.
Категориально-категориальные ассоциации (обеспечиваемые коэффициентом неопределенности) являются АСИММЕТРИЧНЫМИ, что означает, что каждая строка представляет, насколько заголовок строки (слева) дает информацию о каждом столбце. Например, «Sex», «Pclass» и «Fare» — это элементы, которые дают больше всего информации о «Survived». Для набора данных Титаника эта информация довольно симметрична, но это не всегда так.
Наконец, стоит отметить эти методы корреляции/ассоциации.
не следует воспринимать как истину, поскольку они делают предположения о лежащем в основе распределении данных и взаимосвязей. Тем не менее, они могут быть очень полезной отправной точкой.
Выбор переменной
Когда целевая переменная указана, она появится первой в специальном черном поле. В настоящее время целями могут быть только числовые и логические объекты.
Из этой сводки мы можем сделать вывод, что «Выживший» не имеет пропущенных данных в обучающем наборе (891, 100%), что есть 2 различных возможных значения (представляющих менее 1% всех значений), и из графика это может быть подсчитано, что около 60 % не выжили.
Качественные и логические данные
Когда вы наводите указатель мыши на одну из переменных, в поле справа отобразятся подробности. Содержание деталей зависит от типа анализируемой переменной. В случае категориальной (или булевой) переменной, как в случае с целью, анализ выглядит следующим образом:
Здесь мы можем увидеть точную статистику по каждому классу, где 62% не выжил, а 38% выжил. Вы также получаете подробную информацию об ассоциациях для каждой из других функций.
Количественные данные
Числовые данные показывают больше информации о его сводке. Здесь мы видим, что в этом случае отсутствует около 20 % данных (21 % в тестовых данных, что очень согласуется).
Обратите внимание, что целевое значение (в данном случае «выживший») отображается в виде линии прямо над графиком распределения. Это позволяет мгновенно анализировать целевое распределение относительно других переменных.
Интересно, что на графике справа видно, что выживаемость довольно постоянна во всех возрастах, за исключением самых молодых, у которых выживаемость выше. Казалось бы, «женщины и дети прежде всего» — не просто слова.
Детали количественной переменной
Как и в случае с категориальным типом данных, числовой тип данных отображает дополнительную информацию в своей области сведений. Здесь стоит отметить кнопки в верхней части графика.
Эти кнопки изменяют количество «бинов», отображаемых на графике. Вы можете выбрать один из следующих вариантов: Авто, 5, 15, 30.
Чтобы получить доступ к этим кнопкам, вы должны «зафиксировать» текущую функциональность, нажав на них. После этого функция имеет КРАСНЫЙ КОНТУР, показывающий, что она заблокирована и вы можете получить доступ к области сведений.
Текстовые данные
На данный момент все, что система не считает числовым или категориальным, будет считаться «текстом». Текстовые функции в настоящее время показывают только число (в процентах) в качестве статистики.
Сравнение субпопуляций
Даже если вы просматриваете только один набор данных, может быть очень полезно изучить характеристики различных подгрупп в этом наборе данных.
Для этого Sweetviz предлагает функцию compare_intra(). Чтобы использовать его, вы предоставляете логический тест, который разделяет популяцию (здесь мы пытаемся обучить["Пол"] == 'мужской', чтобы получить представление о разных гендерных популяциях) и даете каждой подгруппе. Например:
my_report = sweetviz.compare_intra(train, train["Sex"] == 'мужчина', ["мужчина", "женщина"], 'выжил')my_report.show_html() # Без указания имени файла по умолчанию будет SWEETVIZ_REPORT.html
Это дает следующий анализ:
Обратите внимание, что целевое значение (в данном случае «выживший») теперь отображается в виде отдельных линий, по одной для каждого набора сравниваемых данных (например, мужчина в синем цвете, женщина в оранжевом).
Пример набора данных Титаника
идентификатор пассажира

- Распределение ID и живучести равномерное и упорядоченное.
- Нет недостающих данных
Секс

- В два раза больше мужчин, чем женщин
- Женщины переносят 30% лучше, чем мужчины
- Одинаковые распределения в обучающих и тестовых наборах
- Нет недостающих данных
Возраст

- 20 % отсутствующих данных, согласованные отсутствующие данные и распределение между Train и Test
- Население сосредоточено на молодых людях, но хорошо представлены лица в возрасте от 0 до 70 лет.
- Выживаемость на удивление равномерно распределена, за исключением пика в более молодом возрасте.
- Возраст кажется связанным с братьями и сестрами, P-классом и тарифом, и немного более удивительным для Embarked.
Имя

- Нет недостающих данных
- Все имена разные
Pкласс

- Выживаемость близко соответствует классу (первый класс, скорее всего, выживет, третий класс, наименее вероятно)
- Аналогичное распределение между Train и Test
- Нет недостающих данных
СибСп

- Кажется, что пик живучести приходится на 1 и в некоторой степени на 2, но (смотря на панель сведений, не показанную здесь) наблюдается крутой спад на 3 и выше. Многодетные семьи не могли этого сделать или, может быть, были беднее?
парк

- Похожие актеры
- Нет недостающих данных
Проездной билет
- ~80 % различных значений, т.е. в среднем примерно 1 из 5 общих билетов
- Билет с самой высокой частотой был 7, что обычно соответствует максимальному количеству братьев и сестер (8).
- Нет пропущенных данных, данные выглядят довольно чистыми
Транспортные расходы

- Как и ожидалось, как и в случае с классом P, более высокие тарифы сохранились лучше (хотя размер выборки становится довольно тонким на более высоких уровнях).
- Коэффициент корреляции 0,26 для «выжившего» относительно высок, поэтому он, как правило, поддерживает эту теорию.
- Около 30 % различных значений кажутся немного высокими, поскольку вы ожидаете меньше фиксированных цен, но, похоже, много детализации, так что это нормально.
- В тестовом наборе отсутствует только 1 запись, довольно согласованные данные между Train и Test
Кабина

- 78% отсутствуют данные
- Максимальная частота - 4, что имеет смысл иметь максимум 4 человека в салоне.
Встроенный

- 3 различных значения (S, C, Q)
- Чуть выше живучесть на C; может это место с более богатыми людьми?
- Во всяком случае, «Встроенный» показывает коэффициент неопределенности всего 0,03 для «Выжившего», поэтому он может быть не очень значительным.
Общий анализ
- В целом, большая часть данных имеется и кажется последовательной и логичной; никаких серьезных отклонений или огромных сюрпризов
Тестовые и тренировочные данные
Тест содержит примерно на 50 % строк меньше.
Train и Test очень близки по распределению недостающих данных.
Значения обучающих и тестовых данных очень согласованы по всем направлениям.
Ассоциативный/корреляционный анализ
- Пол, стоимость проезда и класс дают больше всего информации о выживших.
- Как и ожидалось, Fare и Pclass сильно коррелированы.
- Возраст, кажется, многое говорит нам о Pclass, братьях и сестрах и, в некоторой степени, о Fare, чего можно было ожидать. Кажется, это многое говорит нам о «Embedded», что немного более удивительно.
отсутствуют данные
- Существенных недостающих данных нет, за исключением возраста (~ 20 %) и салона (~ 77 %).