pandas_profiling - Лена Капаца
pandas_profiling by Лена Капаца Dec. 13, 2020

Профайлер Pandas (pandas_profiling) – библиотека для создания статистического отчета о Датафрейме (DataFrame). На момент создания статьи определяет:

А также строит графики:

Пример

Чтобы установить какой-то внешний модуль, а профайлер Pandas к ним относится, используют специальную команду:

!pip install pandas-profiling

Теперь его можно импортировать, как и любую другую библиотеку, директивой import:

import pandas as pd
import pandas_profiling

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

df = pd.read_csv('https://www.dropbox.com/s/lsa6q8iqtmfd6ob/eda-bank-dataset.csv?dl=1', sep = ';')
df.head()

Создадим датафрейм из csv-файла. Наш набор выглядит вот так:

Запросим расширенную статистическую аналитику. Чтобы вызвать профайлер Pandas, вызовем встроенную функцию ProfileReport(). Нам понадобится чуть меньше минуты, прежде чем выделенные мощности рассчитают сводку:

pandas_profiling.ProfileReport(df)

Итак. Мы получили обширный документ, и вкладки здесь – это якорные ссылки на раздел длинного HTML-документа. Пролистаем отчет, и посмотрим, какую пользу можно извлечь из каждого раздела.

Overview

В разделе «Сводка» (Overview) находится набор полезных метрик: число признаков, наблюдений, пустых строк, пустых ячеек вообще, и их доля в документе, количество рядов-дубликатов и их доля в датасете:

Далее по списку – общий объем занимаемой файлом памяти, и «вес» каждого наблюдения. В правой части вкладки – число категориальных и числовых признаков. Эти метрики нужны, чтобы подготовить датасет к загрузке в модель.

Подраздел «Воспроизведение» (Reproduction) содержит записи о начале о окончании анализа, длительности расчетов, версии профайлера, файла .yaml со скриптом, с помощью которого операционная система и проходится по датасету:

В «Предупреждениях» (Warnings) можно ознакомиться с обнаруженными особенностями данных, которые повлияют на предсказательную способность будущей модели. Система уже сейчас обнаружила дубликаты. Нашла она также и признаки с высокой степенью корреляции, а это значит, что некоторые из них могут быть удалены из Тренировочных данных (Train Data) еще до начала обучения Модели (Model). Нули для признака "Предыдущий контакт" – это норма (разговор с человеком случился в первый раз), однако профайлер все равно уведомляет, что признак "переполнен" нулевыми значениями.

Variables

Наконец, первая секция изучена, приступим к обзору Переменных (Variable). Каждый из признаков датасета последовательно характеризуется: тут и доля уникальных значений 'Unique (%)', и пропуски (Missing), и задействованная память (Memory size):

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

Для числовых признаков  (например, "Возраст") сводка весьма обширна: здесь и среднее арифметическое, и минимум-максимум, и доля нулевых значений. График призван продемонстрировать долю нулевых значений переменной. Их здесь нет.

Для столбца "Работа" – категориального признака на горизонтальной  гистограмме приводятся самые часто встречающиеся типы профессий.

Interactions

Едем дальше. Этот необычный график – видоизмененная точечная диаграмма. В документации ее гордо величают 'Hexagonal binned plot' (гексагональный группированный график). Она рассматривает каждую пару числовых признаков с целью обнаружить некоторые особенности данных:

Для пары "Возраст – Длительность [телефонного разговора]", например, обнаружилось, что банк выбрал фокус-группой молодых людей (30 - 40 лет).

Correlations

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

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

Missing values

Наш датасет прекрасно подготовлен, а это трудоемкое и дорогое занятие. В нем Пропуски (Omission) обозначены по-особенному, не 'NaN' (Not a Number), иначе столбчатая диаграмма выглядела бы иначе. В таких случаях при подготовке данных будет применена особая стратегия поиска нетипичных пропусков, но вернемся к профайлеру.

Sample

С разделом Sample все довольно просто: это выборка из 10 первых и последних наблюдений:

Иногда это полезно, чтобы получить представление о том, сортированы ли какие-либо признаки или нет, чтобы правильно разделить датасета на тренировочную и Тестовую части (Test Data).

Duplicate rows

Система обнаружила все дубликаты и подсчитала число вхождений в столбце count:

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

Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.

Фото: @lena_pixl

© Лена Капаца. Все права защищены.