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

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

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

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

Каковы наиболее важные возможности библиотеки профилирования данных?

Python — наиболее распространенный программный язык для операций с данными. У нас есть сотни библиотек с открытым исходным кодом, которые решают различные проблемы работы с данными в Python. В этом смысле в Python существуют различные библиотеки профилирования данных; Большие надежды, ydata-profiling, lux и DataProfiler.

Вот некоторые из основных возможностей, которые должна предлагать библиотека профилирования данных;

  1. Анализ данных. Библиотека профилирования данных может предоставлять различные методы анализа данных, такие как статистический анализ, визуализация данных и распознавание образов.
  2. Визуализация данных. Библиотека профилирования данных может предоставлять различные методы визуализации данных, такие как гистограммы, диаграммы рассеяния и тепловые карты.
  3. Проверка качества данных. Библиотека профилирования данных может обеспечивать проверку качества данных, например полноты, точности и непротиворечивости данных.
  4. Отчеты о профилировании данных. Библиотека профилирования данных может создавать подробные отчеты о качестве данных, их полноте, точности и согласованности данных.
  5. Автоматизация профилирования данных. Библиотека профилирования данных может предоставлять возможности для автоматизации задач профилирования данных, таких как планирование запусков профилирования данных, интеграция с другими инструментами управления данными и создание предупреждений о проблемах с качеством данных.

Библиотеки профилирования данных

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



В следующих разделах я буду тестировать библиотеки Python и сравнивать их возможности. В целях тестирования я буду использовать Набор данных о погашении кредита на транспортное средство NBFI на Kaggle.

1- ydata-профилирование

Pandas-profiling создан для поддержки объектов Python Pandas. По мере развития для поддержки Spark библиотека была переименована в ydata-profiling.

ydata-profiling не является встроенным пакетом Python. Вам нужно установить его в свой терминал с помощью команды pip install ydata-profiling.

Ключевая особенность

Ниже вы можете найти основные функции библиотеки профилирования ydata;

  • Вывод типа: автоматическое определение типов данных столбцов (категориальный, числовой, дата и т. д.)
  • Предупреждения. Сводка проблем/проблем с данными, над которыми вам может понадобиться поработать (отсутствующие данные, неточности, неравномерность и т. д.).
  • Одномерный анализ: включая описательную статистику (среднее, медиана, мода и т. д.) и информативные визуализации, такие как гистограммы распределения.
  • Многомерный анализ: включая корреляции, подробный анализ отсутствующих данных, повторяющихся строк и визуальную поддержку парного взаимодействия переменных.
  • Временные ряды: включая различную статистическую информацию относительно данных, зависящих от времени, таких как автокорреляция и сезонность, вдоль графиков ACF и PACF.
  • Анализ текста: наиболее распространенные категории (верхний и нижний регистр, разделитель), шрифты (латиница, кириллица) и блоки (ASCII, кириллица).
  • Анализ файлов и изображений: размеры файлов, даты создания, размеры, указание на усеченные изображения и наличие метаданных EXIF.
  • Сравнить наборы данных: однострочное решение для быстрого и полного отчета о сравнении наборов данных.
  • Гибкие форматы вывода: весь анализ можно экспортировать в отчет в формате HTML, которым можно легко поделиться с другими сторонами, в формате JSON для легкой интеграции в автоматизированные системы и в виде виджета в блокноте Jupyter.
  • Интеграции.автоматизация операций профилирования на различных этапах имеет решающее значение для текущих операций. Библиотека поддерживает интеграцию с другими основными инструментами с открытым исходным кодом в современном стеке данных; Большие надежды, Alitflow, Prefect и др.

Пример

В Jupyter Notebook я импортирую набор данных и выполню функцию ProfileReport, чтобы получить полный отчет;

import pandas as pd
from ydata_profiling import ProfileReport

df = pd.read_csv("data/Train_Dataset.csv")
profile = ProfileReport(df, title="Pandas Profiling Report")
profile

Отчет создается автоматически и представляет собой интерактивный объект. Вы можете прокручивать различные вкладки и столбцы, чтобы получить то, что вы ищете. Отчет содержит следующие разделы;

  • Обзор

В разделе обзора есть разделы Обзор, Оповещения и Воспроизведение.

Раздел Обзор дает общее представление о наборе данных с общей статистикой качества данных.

Раздел Оповещения показывает потенциальные несоответствия в наборе данных. Например, наш набор данных содержит 67 случаев, требующих генерирования тревоги;

В разделе «Воспроизведение» приведены подробности на тот случай, если мы захотим воспроизвести этот отчет в будущем. Объект config.json содержит все конфигурации сгенерированного отчета.

  • Переменные

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

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

В разделе взаимодействий с помощью интерактивной диаграммы мы можем визуализировать взаимодействия между двумя переменными;

  • Корреляции

В разделе корреляции мы можем визуализировать и сообщать о корреляциях между переменными;

  • Отсутствующие значения

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

  • Образец

В разделе примеров мы можем визуализировать первую или последнюю строки набора данных.

Интеграция больших ожиданий

Great Expectations — это ведущий инструмент для проверки, документирования и профилирования ваших данных для поддерживать качество и улучшать коммуникацию между командами. Для получения подробной информации об инструменте вы можете проверить мою статью;



ydata-profiling предоставляет простой метод to_expectation_suite(), который возвращает объект Большие ожидания ExpectationSuite, содержащий набор ожиданий. Ниже я собираюсь создать костюм ожидания, непосредственно созданный объектом профиля.

import great_expectations as ge

data_context = ge.data_context.DataContext(
    context_root_dir="../great_expectations"
)

suite = profile.to_expectation_suite(suite_name="profiling-demo",
    data_context=data_context,
    save_suite=False,
    run_validation=False,
    build_data_docs=False,)

# Save the suite
data_context.save_expectation_suite(suite)

# Run validation on your dataframe
batch = ge.dataset.PandasDataset(df, expectation_suite=suite)


results = data_context.run_validation_operator(
    "action_list_operator", assets_to_validate=[batch]
)

validation_result_identifier = results.list_validation_result_identifiers()[0]

# Build and open data docs
data_context.build_data_docs()
data_context.open_data_docs(validation_result_identifier)

Инструменты выполнения DAG

Благодаря интерфейсам Python, командной строки и Jupyter профилирование ydata легко интегрируется с инструментами выполнения DAG, такими как Airflow, Dagster, Kedro и Prefect, что позволяет легко стать строительным блоком конвейеров приема и анализа данных. Ознакомьтесь с доступными примерами здесь.

Упрощенная интеграция

Streamlit — это библиотека Python с открытым исходным кодом, предназначенная для создания веб-приложений для машинного обучения и обработки данных. Для получения подробной информации об инструменте вы можете проверить мою статью;



Если вы хотите создать веб-приложение для визуализации отчета о профиле, вы можете напрямую интегрировать Streamlit с ydata-profiling. Ознакомьтесь с доступными примерами здесь.

2- Люкс

Lux — это библиотека Python, которая облегчает быстрое и простое исследование данных за счет автоматизации процесса визуализации и анализа данных. Просто распечатав кадр данных в блокноте Jupyter, Lux рекомендует набор визуализаций, выделяющих интересные тенденции и закономерности в наборе данных.

Lux не является встроенным пакетом Python. Вам нужно установить его в свой терминал с помощью команды pip install lux-api. После установок;

Чтобы активировать расширение Jupyter Notebook:

jupyter nbextension install --py luxwidget
jupyter nbextension enable --py luxwidget

Чтобы активировать расширение JupyterLab:

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

Пример

В Jupyter Notebook я импортирую набор данных в Pandas Dataframe;

import pandas as pd
import lux

df = pd.read_csv("data/Train_Dataset.csv")

В Lux есть интерактивный виджет, который активируется, как только мы загружаем объект Pandas Dataframe.

Когда мы нажимаем на объект "Toggle Pandas/Lux", Lux преобразует табличное представление Pandas Dataframe в интерактивные диаграммы в трех разделах;

Корреляция

В разделе корреляции мы можем визуализировать корреляции между двумя переменными;

Распространение

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

Вхождение

В разделе возникновения мы можем визуализировать частотные распределения категориальных переменных;

Ниже вы можете найти демонстрацию интерактивных графиков;

Намерение

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

3- Профилировщик данных

DataProfiler — это библиотека Python, предназначенная для упрощения анализа данных, мониторинга и обнаружения конфиденциальных данных.

Загружая данные с помощью одной команды, библиотека автоматически форматирует и загружает файлы в DataFrame. Профилируя данные, библиотека идентифицирует схему, статистику, сущности (PII/NPI) и многое другое. Затем профили данных можно использовать в последующих приложениях или отчетах.

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

DataProfiler поддерживает интеграцию с библиотекой Great Expectations. Некоторые примеры вы можете посмотреть в официальной документации.

Пример

В Jupyter Notebook я импортирую набор данных и выполню функцию Profiler, чтобы получить полный отчет;

from dataprofiler import Data, Profiler
import json

df = Data("data/Train_Dataset.csv")
profile = Profiler(df)
report  = profile.report(report_options={"output_format": "pretty"})
print('\nREPORT:\n' + '='*80)
print(json.dumps(report, indent=4))

DataProfiler не имеет никакого визуального представления. Он вычисляет всю статистику в словаре, и нам нужно ее распечатать. Ниже вы можете просмотреть сгенерированный отчет;

Заключение

В этой статье я рассмотрел три разные библиотеки профилирования данных. Эти библиотеки предназначены для разных групп пользователей и вариантов использования;

  • Корпоративное решение для всей группы обработки данных:ydata-profiling делает все, что вы можете ожидать от библиотеки с открытым исходным кодом. Хотя он предоставляет легко читаемые отчеты в текстовом формате, он в то же время создает великолепные визуальные эффекты. Интеграция с Great Expectations, веб-приложениями, воспроизводимостью и инструментами выполнения DAG делает его лучшим решением на рынке сегодня.
  • Аналитики данных, ориентированные на визуальные эффекты: Lux стремится предоставить простые в использовании интерактивные диаграммы в Jupyter Notebook практически без интеграции и усилий.
  • Инженеры данных, ориентированные на качество воспроизводимых данных: DataProfiler стремится предоставлять множество различных статистических данных для различных типов форматов данных.

Большое спасибо за прочтение 🙏

Если вас интересуют темы качества данных, вы можете ознакомиться с другими моими статьями;







Если вас интересуют темы данных и лидерства, вы можете ознакомиться со всеми остальными статьями в моем глоссарии;



Если вы хотите связаться со мной, вы можете найти меня в Linkedin и Mentoring Club!