Исследовательский анализ данных утомителен. Автоматизируйте процесс и создавайте подробные интерактивные отчеты с помощью одной строчки кода с помощью Pandas-Profiling.

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

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

Что такое профилирование панд?

Pandas-profiling - это библиотека с открытым исходным кодом, которая может создавать красивые интерактивные отчеты для любого набора данных с помощью всего одной строчки кода. Звучит интересно? Давайте посмотрим на документацию, чтобы лучше понять, что она делает.

Pandas-profiling создает отчеты профиля из pandas DataFrame. Функция pandas df.describe() прекрасна, но немного проста для серьезного исследовательского анализа данных. pandas_profiling расширяет фрейм данных pandas с помощью df.profile_report() для быстрого анализа данных.

Для каждого столбца в интерактивном HTML-отчете представлена ​​следующая статистика, если она актуальна для данного типа столбца:

  • Вывод типа: определение типов столбцов во фрейме данных.
  • Основы: тип, уникальные значения, отсутствующие значения.
  • Квантильная статистика, например минимальное значение, Q1, медиана, Q3, максимум, диапазон, межквартильный диапазон.
  • Описательная статистика, например среднее значение, режим, стандартное отклонение, сумма, среднее абсолютное отклонение, коэффициент вариации, эксцесс, асимметрия.
  • Наиболее частые значения
  • Гистограмма
  • Корреляции: выделение сильно коррелированных переменных (матрицы Спирмена, Пирсона и Кендалла)
  • Матрица отсутствующих значений, количество, тепловая карта и дендрограмма пропущенных значений
  • Анализ текста узнайте о категориях (прописные буквы, пробел), скриптах (латиница, кириллица) и блоках (ASCII) текстовых данных.

Теперь, когда мы знаем, что такое профилирование pandas, давайте посмотрим, как его установить и использовать в блокноте Jupyter или в Google Colab в следующем разделе.

Установите Pandas-profiling:

Использование pip

Вы можете очень легко установить pandas-profiling с помощью диспетчера пакетов pip с помощью следующей команды:

pip install pandas-profiling[notebook,html]

В качестве альтернативы вы можете установить последнюю версию прямо из Github:

pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip

Использование Conda

Если вы используете conda, вы можете использовать следующую команду для установки

conda install -c conda-forge pandas-profiling

Установка в Google Colab

Google colab поставляется с предустановленным профилированием Pandas, но, к сожалению, он имеет более старую версию (v1.4). Если вы следите за этой статьей или документацией GitHub, то код не будет работать в Google Colab, если вы не установите последнюю версию библиотеки (v2.6).

Для этого вам необходимо сначала удалить существующую библиотеку и установить последнюю, как показано ниже:

# To uninstall
!pip uninstall !pip uninstall pandas_profiling

Теперь для установки нам нужно запустить команду pip install.

!pip install pandas-profiling[notebook,html]

Создавать отчеты:

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

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

Загрузите библиотеки:

import pandas as pd
import pandas_profiling
from pandas_profiling import ProfileReport
from pandas_profiling.utils.cache import cache_file

Импортировать данные

file = cache_file("titanic.csv",
"https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv")
data = pd.read_csv(file)

Создать отчет:

Чтобы создать отчет, запустите в записной книжке следующий код.

profile = ProfileReport(data, title="Titanic Dataset", html={'style': {'full_width': True}}, sort="None")

Вот и все. С помощью одной строчки кода вы создали подробный отчет о профиле. Теперь посмотрим на результаты, включив отчет в блокнот.

Включить отчет в Блокнот как IFrame

profile.to_notebook_iframe()

Это будет включать интерактивный отчет в виде HTML-окна iframe в записной книжке.

Сохранение отчета

Сохраните отчет как HTML-файл, используя следующий код:

profile.to_file(output_file="your_report.html")

Или получите данные в формате JSON, используя:

# As a string
json_data = profile.to_json()

# As a file
profile.to_file(output_file="your_report.json")

Результаты, достижения:

Теперь, когда мы знаем, как создавать отчеты с помощью профилирования pandas, давайте посмотрим на результат.

Обзор:

Pandas_profiling создает очень подробный обзор переменных-предикторов, вычисляя общее количество пропущенных ячеек, повторяющихся строк, количество различных значений, пропущенных значений, нулей для переменных-предикторов. Он также отмечает переменные с высокой мощностью или отсутствующими значениями в разделе предупреждений, как вы можете видеть на изображении выше.

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

Распределение классов:

Числовые характеристики:

Для числовых характеристик, помимо подробной статистики, такой как среднее значение, стандартное отклонение, минимум, максимум, межквартильный диапазон (IQR) и т. Д., Он также строит гистограмму, дает список общих и экстремальных значений.

Категориальные особенности:

Подобно числовым признакам, для категориальных признаков он вычисляет общие значения, длину, символы и т. Д.

Взаимодействия:

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

Матрица корреляции:

Корреляция - это статистический метод, который может показать, насколько сильно связаны пары переменных. Например, рост и вес связаны; высокие люди обычно тяжелее, чем люди ниже ростом. Отношения не идеальны. Люди одного роста различаются по весу, и вы можете легко представить себе двух знакомых, у которых более короткий тяжелее более высокого. Тем не менее, средний вес людей 5 футов 5 дюймов меньше, чем средний вес людей 5 футов 6 дюймов, а их средний вес меньше, чем у людей 5 футов 7 дюймов и т. Д. Корреляция может сказать вам, как Большая часть различий в весе людей связана с их ростом.

Главный результат корреляции называется коэффициентом корреляции (или «r»). Он колеблется от -1,0 до +1,0. Чем ближе r к +1 или -1, тем теснее связаны две переменные.

Если r близко к 0, это означает, что между переменными нет связи. Если r положительно, это означает, что по мере того, как одна переменная становится больше, другая становится больше. Если r отрицательно, это означает, что по мере того, как один становится больше, другой становится меньше (часто это называется «обратной» корреляцией).

Когда дело доходит до создания корреляционной матрицы для всех числовых характеристик, библиотека pandas_profiling дает нам на выбор все популярные варианты, включая Пирсона r, Спирмена ρ и т. Д.

Теперь, когда мы знаем преимущества использования pandas_profiling, полезно также отметить недостаток, который имеет эта библиотека.

Недостаток:

Основным недостатком профилирования pandas является его использование с большими наборами данных. С увеличением размера данных время создания отчета также значительно увеличивается.

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

from pandas_profiling import ProfileReport
# Generate report for 10000 data points
profile = ProfileReport(data.sample(n = 10000), title="Titanic Data set", html={'style': {'full_width': True}}, sort="None")
# save to file
profile.to_file(output_file='10000datapoints.html')

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

profile = ProfileReport(large_dataset, minimal=True)
profile.to_file(output_file="output.html")

Заключение:

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

Если вы хотите получить полный отчет с рабочим кодом, вы можете взглянуть на следующую записную книжку. А если вы хотите прочитать другие мои статьи, вы можете найти ссылки ниже.



Репозиторий Pandas-Profiling на GitHub:



Если вам понравилась эта статья, возможно, вам понравятся некоторые из моих других статей.







Обо мне:

Привет, я Суканта Рой. Разработчик программного обеспечения, начинающий инженер по машинному обучению, бывший студент Google Summer of Code 2018 и большой любитель психологии. Если что-то из этого вас интересует, вы можете подписаться на меня в среде или связаться со мной в LinkedIn.