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


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

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

В этой статье вы будете использовать семантику ссылки:

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

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

  • Получение подписки Microsoft Fabric. Или зарегистрируйте бесплатную пробную версию Microsoft Fabric.

  • Войдите в Microsoft Fabric.

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

    Снимок экрана: меню переключателя интерфейса, в котором показано, где выбрать Обработка и анализ данных.

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

python %pip install -U semantic-link  

Поиск функциональных зависимостей в данных

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

В следующем фрагменте кода Python показано, как использовать find_dependencies.

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 предоставляет дополнительные возможности для обработки отсутствующих значений, отображая значения, сопоставленные с нарушением значений, ограничение количества возвращенных нарушений и сортировку результатов по подсчету или детерминированному столбцу. (TODO: ссылка на документ API)

Выходные 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 (determinant) и CITY (зависимыми). Если набор данных имеет проблемы с качеством данных, например один и тот же ZIP-код, назначенный нескольким городам, функция создает граф нарушений значений.

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

Визуализация, созданная с помощью 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 (зависимыми). Для каждого значения детерминированного значения выбирается наиболее распространенное значение зависимого, а все строки с другими значениями удаляются. Например, учитывая следующий набор данных:

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

Строка с CITY=Сиэтл будет удалена, а в выходных данных содержится zip-файл функциональной зависимости —> CITY.

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

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