Поделиться через


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

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

В этой статье используется семантическая ссылка:

  • Поиск зависимостей между столбцами Кадра FabricDataFrame
  • Визуализация зависимостей
  • Определение проблем с качеством данных
  • Визуализация проблем с качеством данных
  • Принудительное применение функциональных ограничений между столбцами в наборе данных

Необходимые компоненты

  • Перейдите к интерфейсу Обработка и анализ данных, найденном в Microsoft Fabric.
  • Создайте записную книжку для копирования и вставки кода в ячейки.
  • Для Spark 3.4 и более поздних версий семантическая ссылка доступна в среде выполнения по умолчанию при использовании Fabric и не требуется устанавливать ее. Если вы используете Spark 3.3 или ниже или хотите обновить до последней версии семантической ссылки, можно выполнить следующую команду: python %pip install -U semantic-link  
  • Добавьте Lakehouse в записную книжку.

Для Spark 3.4 и более поздних версий семантическая ссылка доступна в среде выполнения по умолчанию при использовании Fabric и не требуется устанавливать ее. Если вы используете Spark 3.3 или ниже или хотите обновить до последней версии семантической ссылки, выполните следующую команду:

%pip install -U semantic-link
``` 

## Find functional dependencies in data

The SemPy `find_dependencies` function detects functional dependencies between the columns of a FabricDataFrame. The function uses a threshold on conditional entropy to discover approximate functional dependencies, where low conditional entropy indicates strong dependence between columns. To make the `find_dependencies` function more selective, you can set a lower threshold on conditional entropy. The lower threshold means that only stronger dependencies will be detected.

This Python code snippet demonstrates how to use `find_dependencies`:

```python
from sempy.fabric import FabricDataFrame
from sempy.dependencies import plot_dependency_metadata
import pandas as pd


df = FabricDataFrame(pd.read_csv("your_data.csv"))

deps = df.find_dependencies()

Функция find_dependencies возвращает Объект FabricDataFrame с обнаруженными зависимостями между столбцами. Список представляет столбцы с сопоставлением 1:1. Функция также удаляет транзитивные края, чтобы попытаться обрезать потенциальные зависимости.

При указании dropna=True параметра строки, имеющие значение NaN в любом столбце, удаляются из оценки. Это может привести к нетранстивным зависимостям, как показано в следующем примере:

A B C
1 1 1
1 1 1
1 Не число 9
2 Не число 2
2 2 2

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

A B C
1 1 Не число
2 1 Не число
Не число 1 1
Не число 2 1
1 Не число 1
1 Не число 2

Визуализация зависимостей в данных

После поиска функциональных зависимостей в наборе данных (с помощью find_dependencies) можно визуализировать зависимости с plot_dependency_metadata помощью функции. Эта функция принимает результирующий кадр FabricDataFrame и find_dependencies создает визуальное представление зависимостей между столбцами и группами столбцов.

В этом фрагменте кода Python показано, как использовать plot_dependencies:

from sempy.fabric import FabricDataFrame
from sempy.dependencies import plot_dependency_metadata
from sempy.samples import download_synthea

download_synthea(which='small')

df = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv"))

deps = df.find_dependencies()
plot_dependency_metadata(deps)

Функция plot_dependency_metadata создает визуализацию, отображающую группировку столбцов 1:1. Столбцы, принадлежащие одной группе, помещаются в одну ячейку. Если подходящие кандидаты не найдены, возвращается пустой кадр FabricDataFrame.

Снимок экрана: выходные данные функции plot_dependencies.

Определение проблем с качеством данных

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

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

В этом фрагменте кода показано, как использовать функцию list_dependency_violations :

from sempy.fabric import FabricDataFrame
from sempy.samples import download_synthea

download_synthea(which='small')

df = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv"))

violations = df.list_dependency_violations(determinant_col="ZIP", dependent_col="CITY")

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

ZIP ГОРОД count
12345 Бостон 2
12345 Seattle 1

Это означает, что два разных города (Бостон и Сиэтл) имеют одно и то же значение ZIP-кода (12345). Это свидетельствует о проблеме с качеством данных в наборе данных.

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

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

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

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

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

В этом фрагменте кода показано, как использовать функцию plot_dependency_violations :

from sempy.fabric import FabricDataFrame
from sempy.dependencies import plot_dependency_violations
from sempy.samples import download_synthea

download_synthea(which='small')

df = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv"))

df.plot_dependency_violations(determinant_col="ZIP", dependent_col="CITY")

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

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

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

Снимок экрана: выходные данные функции plot_dependency_violations.

Принудительное применение функциональных ограничений

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

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

В этом фрагменте кода показано, как использовать функцию drop_dependency_violations :

from sempy.fabric import FabricDataFrame
from sempy.samples import download_synthea

download_synthea(which='small')

df = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv"))

cleaned_df = df.drop_dependency_violations(determinant_col="ZIP", dependent_col="CITY")

Здесь функция применяет функциональное ограничение между столбцами ZIP (determinant) и CITY (зависимыми). Для каждого значения детерминированного значения выбирается наиболее распространенное значение зависимого, а все строки с другими значениями удаляются. Например, учитывая этот набор данных, строка с CITY=Seattle будет удалена, а функция ZIP-файла зависимостей —> CITY содержится в выходных данных:

ZIP ГОРОД
12345 Seattle
12345 Бостон
12345 Бостон
98765 Балтимор
00000 Сан-Франциско

Функция drop_dependency_violations предоставляет verbose возможность управления выходными подробными сведениями. Задав параметр verbose=1, можно увидеть количество удаленных строк. Значение verbose=2 показывает все содержимое строки удаленных строк.

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