Обнаружение, изучение и проверка функциональных зависимостей в данных с помощью семантической связи
Функциональные зависимости — это связи между столбцами в таблице, где значения в одном столбце используются для определения значений в другом столбце. Понимание этих зависимостей поможет вам выявить закономерности и связи в данных, которые, в свою очередь, могут помочь в проектировании функций, очистке данных и задачах построения модели. Функциональные зависимости действуют в качестве эффективной инвариантной, которая позволяет находить и устранять проблемы с качеством данных, которые могут быть трудно обнаружить в противном случае.
В этой статье используется семантическая ссылка:
- Поиск зависимостей между столбцами Кадра FabricDataFrame
- Визуализация зависимостей
- Определение проблем с качеством данных
- Визуализация проблем с качеством данных
- Принудительное применение функциональных ограничений между столбцами в наборе данных
Необходимые компоненты
Получение подписки Microsoft Fabric. Или зарегистрируйте бесплатную пробную версию Microsoft Fabric.
Войдите в Microsoft Fabric.
Используйте переключатель интерфейса в левой нижней части домашней страницы, чтобы перейти на Fabric.
- Перейдите к интерфейсу Обработка и анализ данных, найденном в 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.
Определение проблем с качеством данных
Проблемы с качеством данных могут иметь различные формы, например отсутствующие значения, несоответствия или неточности. Определение и устранение этих проблем важно для обеспечения надежности и допустимости любого анализа или модели, созданной на основе данных. Одним из способов обнаружения проблем с качеством данных является изучение нарушений функциональных зависимостей между столбцами в наборе данных.
Функция 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
создает визуализацию, которая может помочь определить проблемы с качеством данных набора данных. Однако следует тщательно изучить результаты и рассмотреть контекст данных, чтобы определить наиболее подходящий курс действий для решения выявленных проблем. Этот подход может включать в себя больше очистки, проверки или исследования данных, чтобы обеспечить надежность и допустимость анализа или модели.
Принудительное применение функциональных ограничений
Качество данных имеет решающее значение для обеспечения надежности и допустимости любого анализа или модели, созданного на основе набора данных. Применение функциональных ограничений между столбцами в наборе данных может помочь улучшить качество данных. Функциональные ограничения могут помочь гарантировать, что связи между столбцами имеют точность и согласованность, что может привести к более точному анализу или результатам модели.
Функция 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
может применять функциональные ограничения между столбцами в наборе данных, что может помочь улучшить качество данных и привести к более точным результатам анализа или модели. Однако необходимо тщательно рассмотреть контекст данных и функциональные ограничения, которые вы решили применить, чтобы убедиться, что вы не случайно удалите ценную информацию из набора данных.