Что такое профилирование данных?
Профилирование данных — это процесс изучения и анализа данных для получения представления об их структуре, качестве, полноте и других характеристиках. Он включает в себя использование различных методов и инструментов для сбора и анализа метаданных, статистики и шаблонов из набора данных, включая его размер, тип, диапазон, формат и отношения между его переменными.
Обычно профилирование данных включает в себя такие задачи, как идентификация типов данных, анализ распределения данных, проверка качества данных, обнаружение аномалий данных и визуализация шаблонов данных. Некоторые распространенные инструменты, используемые для профилирования данных, включают программное обеспечение для профилирования данных, инструменты качества данных, инструменты визуализации данных и пакеты статистического программного обеспечения.
Информация, собранная во время профилирования данных, может использоваться для принятия решений об управлении данными, таких как очистка данных, преобразование данных и интеграция данных. Профилирование данных часто используется в качестве предварительного шага перед анализом данных, миграцией данных или хранением данных.
Каковы наиболее важные возможности библиотеки профилирования данных?
Python — наиболее распространенный программный язык для операций с данными. У нас есть сотни библиотек с открытым исходным кодом, которые решают различные проблемы работы с данными в Python. В этом смысле в Python существуют различные библиотеки профилирования данных; Большие надежды, ydata-profiling, lux и DataProfiler.
Вот некоторые из основных возможностей, которые должна предлагать библиотека профилирования данных;
- Анализ данных. Библиотека профилирования данных может предоставлять различные методы анализа данных, такие как статистический анализ, визуализация данных и распознавание образов.
- Визуализация данных. Библиотека профилирования данных может предоставлять различные методы визуализации данных, такие как гистограммы, диаграммы рассеяния и тепловые карты.
- Проверка качества данных. Библиотека профилирования данных может обеспечивать проверку качества данных, например полноты, точности и непротиворечивости данных.
- Отчеты о профилировании данных. Библиотека профилирования данных может создавать подробные отчеты о качестве данных, их полноте, точности и согласованности данных.
- Автоматизация профилирования данных. Библиотека профилирования данных может предоставлять возможности для автоматизации задач профилирования данных, таких как планирование запусков профилирования данных, интеграция с другими инструментами управления данными и создание предупреждений о проблемах с качеством данных.
Библиотеки профилирования данных
В этой части я исключил Большие надежды, так как для этого у меня есть отдельная статья. Если вы хотите узнать больше, вы можете проверить мою предыдущую статью;
В следующих разделах я буду тестировать библиотеки 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!