Откажитесь от старых способов. Будущее за автоматом.

Современный исследовательский анализ данных

Обзор 4-х библиотек для автоматического EDA

EDA расшифровывается как «Исследовательский анализ данных» и, вероятно, является самым важным, но наиболее упускаемым из виду этапом любого проекта в области науки о данных.

Моя цель - поделиться с вами некоторыми инструментами, которые мгновенно в 10 раз увеличат вашу продуктивность при изучении данных.

Контекст

Именно на этапе исследования специалисты по данным близко знакомятся с набором данных, прежде чем переходить к очистке данных, проектированию функций и моделированию.

Однако слишком многие из нас спешат исследовать данные и преждевременно переходят к следующим шагам.

Раньше вам приходилось писать самодельные функции для EDA, и в этой области было много изобретений колеса и / или копирования-вставки. Но с появлением передовых методов, таких как автоматическое машинное обучение, стало очевидно, что EDA также может выиграть от автоматизации.

В этом посте я сначала покажу пример старомодного способа выполнения EDA. Затем я просматриваю следующие пакеты, которые направлены на то, чтобы сделать EDA максимально простым и эффективным:

  • профилирование панд (питон)
  • summarytools (R)
  • исследовать (R)
  • dataMaid (R)

✨ Требования для запуска приведенных ниже примеров

Мы будем использовать следующие наборы данных:

  • регрессия: страхование здоровья, цель которого - прогнозировать размер страховой премии.
  • классификация: титаник, где цель - предсказать, кто выживет.

Установите пакеты R:

install.packages(c("summarytools", "explore" "dataMaid"))

Установите пакет python pandas-profiling:

pip install pandas-profiling

Чтобы использовать пакет из записных книжек Jupyter, нам также необходимо запустить следующее из командной строки:

jupyter nbextension enable --py widgetsnbextension

Если вы предпочитаете Jupyter Lab, используйте следующую команду:

jupyterlab: jupyter labextension install @jupyter-widgets/jupyterlab-manager

По старому

Раньше можно было использовать либо библиотеку визуализации, либо встроенные функции визуализации pandas. Рассмотрим несколько примеров.

import pandas as pd 
import numpy as np 
data = pd.read_csv('insurance.csv')

👉 Функция head

Вероятно, это первый вызов функции в каждой записной книжке по науке о данных, используемый для просмотра данных:

data.head()

👉 Функция describe

Эта функция дает нам некоторую сводную статистику по каждой переменной. Мне нравится разделять числовые и категориальные переменные на два отдельных вызова:

data.describe(include=np.number)

data.describe(include=np.object)

👉 Сюжет с пандами

Двумя наиболее распространенными графиками для односторонних распределений являются гистограммы для категориальных переменных и гистограммы для непрерывных переменных. И то, и другое легко использовать прямо из панд:

data['region'].value_counts().plot.barh(title='Region')

data['age'].plot.hist(title='Age distribution')

Наконец, у нас есть универсальная корреляционная матрица:

data.corr().style.background_gradient(cmap='coolwarm').set_precision(2)

На этом мы завершаем наш быстрый обзор исследовательского анализа данных старой школы. Как видите, мы должны явно записывать каждый шаг. Если количество столбцов станет большим, этот процесс либо станет утомительным, либо нам придется записывать свои собственные функции для его автоматизации.

В оставшейся части поста я рассмотрю существующие успешные пакеты, которые могут выполнить эту автоматизацию для нас.

📦 summarytools (R)

summarytools может быть самым простым способом получить одностороннюю информацию для каждого столбца в наборе данных.

library(summarytools) 
library(readr) 
df <- read_csv("insurance.csv") view(dfSummary(df))

Результат отображается непосредственно в программе просмотра RStudio, но вы также можете сохранить его как файл html с параметром file. Взглянем::

Несмотря на то, что этот вывод не является исчерпывающим, я считаю, что этот вывод чрезвычайно эффективен для упаковки большого количества полезной информации на очень небольшом пространстве. В пакете есть несколько других функций для одномерной статистики и перекрестных таблиц, но настоящая жемчужина, на мой взгляд, - это функция dfSummary, указанная выше.

📦 исследовать (R)

Пакет explore просто невероятен. За 1 строку кода вы получаете законченное блестящее приложение, которое позволяет вам интерактивно исследовать ваши данные. Рассмотрим пример с набором данных titanic. Ниже я показываю одно- и двусторонние графики для двух переменных: категориальной (пол) и непрерывной (возраст). Мы сразу же видим, что у женщин было гораздо больше шансов выжить, а у молодых людей - немного больше:

library(explore) 
df <- read_csv("titanic_train.csv") 
explore(df)

Еще одна приятная функция - вкладка «Объяснение», где мы можем визуализировать простое дерево решений, чтобы построить нашу интуицию на основе прогнозных переменных:

📦 dataMaid (R)

library('dataMaid')  
makeDataReport(df,                
               render = FALSE,
               file = "output_file.Rmd",
               replace = TRUE)

dataMaid, вероятно, является наиболее полным вариантом на данный момент. Вы можете вывести файл Rmd, а затем связать его в HTML-отчет из RStudio, или вы можете использовать render=TRUE, который выведет для вас красивый документ Word!

Отчет начинается со сводной таблицы:

Далее следует раздел для каждой переменной. Вот раздел для bmi, который, согласно приведенной выше сводной таблице, может иметь проблему, которая оказывается проблемой потенциальных выбросов:

Функция makeDataReport имеет множество параметров для настройки вывода. В целом, я очень впечатлен этим пакетом.

📦 профилирование панд (python)

И последнее, но не менее важное: pandas-profiling, вероятно, самый популярный пакет для автоматического EDA в мире Python. Вы можете использовать его из записной книжки, а благодаря фантастической библиотеке ipywidgets вы получаете интерактивную и очень богатую визуализацию для изучения ваших данных.

from pandas_profiling import ProfileReport 
profile = ProfileReport(data, 
                        title='Pandas Profiling Report', 
                        html={'style':{'full_width':True}}) 
profile.to_widgets()

Во-первых, вы получите обзор данных:

Наряду с несколькими предупреждениями, не обнаруженными предыдущими пакетами:

Мы также получаем подробный отчет по каждой переменной:

И мы даже можем переключать детали для более глубокого исследования:

Также доступны графики взаимодействия между переменными:

Другие вкладки (Корреляции, Отсутствующие значения и Образец) соответствуют вашим ожиданиям. Приглашаю вас поиграть с этим замечательным пакетом.

✅ Вердикт

Надеюсь, я убедил вас перестать использовать самодельные функции или дорогие инструменты визуализации и перейти на специализированные пакеты с открытым исходным кодом.

Четыре описанных выше пакета - это мои основные инструменты для исследования данных в реальных условиях. Я начинаю с неинтерактивных, сначала summarytools, а затем dataMaid. Затем я экспериментирую с explore и, наконец, больше всего времени провожу с pandas-profiling.

Так я максимально знакомлюсь со своими данными, не тратя время на написание стандартного кода. В зависимости от результатов, которые я сделаю, я буду использовать другие пакеты для обнаружения аномалий, вменения, разработки функций и т. Д. Каждый из них будет предметом будущих публикаций. Спасибо за прочтение!