Partager via


Détecter, explorer et valider les dépendances fonctionnelles dans vos données à l’aide du lien sémantique

Les dépendances fonctionnelles sont des relations entre les colonnes d’une table, où les valeurs d’une colonne sont utilisées pour déterminer les valeurs d’une autre colonne. La compréhension de ces dépendances peut vous aider à découvrir des modèles et des relations dans vos données, ce qui peut à son tour vous aider lors des tâches d’ingénierie de caractéristiques, de nettoyage des données et de génération de modèles. Les dépendances fonctionnelles agissent comme un invariant efficace qui vous permet de trouver et de résoudre les problèmes de qualité des données qui peuvent être difficiles à détecter autrement.

Dans cet article, vous allez utiliser le lien sémantique pour :

  • Rechercher des dépendances entre les colonnes d’un FabricDataFrame
  • Visualiser les dépendances
  • Identifier des problèmes de qualité des données
  • Visualiser des problèmes de qualité des données
  • Appliquer des contraintes fonctionnelles entre les colonnes d’un jeu de données

Prérequis

  • Accéder à l'expérience Science des données dans Microsoft Fabric.
  • Créez un notebook pour copier/coller du code dans des cellules.
  • Pour Spark 3.4 et versions ultérieures, le lien sémantique est disponible dans le runtime par défaut lors de l’utilisation de Fabric et il n’est pas nécessaire de l’installer. Si vous utilisez Spark 3.3 ou version inférieure, ou si vous souhaitez effectuer une mise à jour vers la version la plus récente du lien sémantique, vous pouvez exécuter la commande : python %pip install -U semantic-link  
  • Ajoutez un Lakehouse à votre notebook.

Pour Spark 3.4 et versions ultérieures, le lien sémantique est disponible dans le runtime par défaut lors de l’utilisation de Fabric et il n’est pas nécessaire de l’installer. Si vous utilisez Spark 3.3 ou version inférieure, ou si vous souhaitez effectuer une mise à jour vers la version la plus récente du lien sémantique, exécutez cette commande :

%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()

La fonction find_dependencies retourne un FabricDataFrame avec des dépendances détectées entre les colonnes. Une liste représente des colonnes qui ont un mappage 1:1. La fonction supprime également les arêtes transitives, pour essayer de supprimer les dépendances potentielles.

Lorsque vous spécifiez l’option dropna=True, les lignes qui ont une valeur NaN dans l’une des colonnes sont supprimées de l’évaluation. Cela peut générer des dépendances non transitives, comme illustré dans cet exemple :

A B C
1 1 1
1 1 1
1 NaN 9
2 NaN 2
2 2 2

Dans certains cas, la chaîne de dépendances peut former des cycles lorsque vous spécifiez l’option dropna=True, comme illustré dans cet exemple :

A B C
1 1 NaN
2 1 NaN
NaN 1 1
NaN 2 1
1 NaN 1
1 NaN 2

Visualiser les dépendances dans les données

Après avoir trouvé des dépendances fonctionnelles dans un jeu de données (à l’aide de find_dependencies), vous pouvez visualiser les dépendances avec la fonction plot_dependency_metadata. Cette fonction prend le FabricDataFrame résultant de find_dependencies et crée une représentation visuelle des dépendances entre les colonnes et les groupes de colonnes.

Cet extrait de code Python montre comment utiliser 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)

La fonction plot_dependency_metadata génère une visualisation qui affiche les regroupements 1:1 de colonnes. Les colonnes appartenant à un seul groupe sont placées dans une seule cellule. Si aucun candidat approprié n’est trouvé, un FabricDataFrame vide est retourné.

Capture d’écran montrant la sortie de la fonction plot_dependencies.

Identifier des problèmes de qualité des données

Les problèmes de qualité des données peuvent avoir différentes formes, par exemple, des valeurs manquantes, des incohérences ou des inexactitudes. L’identification et la résolution de ces problèmes sont importe pour garantir la fiabilité et la validité de n’importe quelle analyse ou modèle basé sur les données. Il est possible de détecter les problèmes de qualité des données en examinant les violations des dépendances fonctionnelles entre les colonnes d’un jeu de données.

La fonction list_dependency_violations peut vous aider à identifier les violations des dépendances fonctionnelles entre les colonnes d’un jeu de données. En tenant compte d’une colonne déterminante et d’une colonne dépendante, cette fonction affiche les valeurs qui sont contraire à la dépendance fonctionnelle, ainsi qu’au nombre de leurs occurrences respectives. Cela peut aider à inspecter les dépendances approximatives et à identifier les problèmes de qualité des données.

Cet extrait de code montre comment utiliser la fonction 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")

Dans cet exemple, la fonction part du principe qu’il existe une dépendance fonctionnelle entre les colonnes ZIP (déterminante) et CITY (dépendante). Si le jeu de données présente des problèmes de qualité des données, par exemple, si le même code postal est attribué à plusieurs villes, la fonction génère les valeurs avec les problèmes :

ZIP VILLE count
12345 Boston 2
12345 Seattle 1

Cette sortie indique que deux villes différentes (Boston et Seattle) ont la même valeur de code postal (12345). Cela suggère un problème de qualité des données dans le jeu de données.

La fonction list_dependency_violations fournit davantage d’options permettant de gérer les valeurs manquantes, de montrer les valeurs mappées aux valeurs en violation, de limiter le nombre de violations retournées, et de trier les résultats en fonction du nombre ou de la colonne déterminante.

La sortie de list_dependency_violations peut aider à identifier les problèmes de qualité des données dans le jeu de données. Toutefois, vous devez examiner attentivement les résultats et prendre en compte le contexte de vos données afin de déterminer le cours d’action le plus approprié pour résoudre les problèmes identifiés. Cette approche peut impliquer un nettoyage, une validation ou une exploration des données supplémentaire pour garantir la fiabilité et la validité de votre analyse ou de votre modèle.

Visualiser des problèmes de qualité des données

Les problèmes de qualité des données peuvent nuire à la fiabilité et à la validité de n’importe quelle analyse ou modèle basé sur ces données. L’identification et la résolution de ces problèmes sont importantes pour garantir la justesse des résultats. Pour détecter les problèmes de qualité des données, vous pouvez examiner les violations des dépendances fonctionnelles entre les colonnes d’un jeu de données. La visualisation de ces violations peut montrer plus clairement les problèmes, et vous aider à les résoudre plus efficacement.

La fonction plot_dependency_violations peut vous aider à visualiser les violations des dépendances fonctionnelles entre les colonnes d’un jeu de données. Étant donné une colonne déterminante et une colonne dépendante, cette fonction affiche les valeurs en violation dans un format graphique, ce qui facilite la compréhension de la nature et de l’étendue des problèmes de qualité des données.

Cet extrait de code montre comment utiliser la fonction 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")

Dans cet exemple, la fonction part du principe qu’il existe une dépendance fonctionnelle entre les colonnes ZIP (déterminante) et CITY (dépendante). Si le jeu de données présente des problèmes de qualité des données, par exemple, si le même code postal est attribué à plusieurs villes, la fonction génère un graphique avec les valeurs en violation.

La fonction plot_dependency_violations fournit davantage d’options permettant de gérer les valeurs manquantes, de montrer les valeurs mappées aux valeurs en violation, de limiter le nombre de violations retournées, et de trier les résultats en fonction du nombre ou de la colonne déterminante.

La fonction plot_dependency_violations génère une visualisation qui peut aider à identifier les problèmes de qualité des données du jeu de données. Toutefois, vous devez examiner attentivement les résultats et prendre en compte le contexte de vos données afin de déterminer le cours d’action le plus approprié pour résoudre les problèmes identifiés. Cette approche peut impliquer un nettoyage, une validation ou une exploration des données supplémentaire pour garantir la fiabilité et la validité de votre analyse ou de votre modèle.

Capture d’écran montrant la sortie de la fonction plot_dependency_violations.

Appliquer des contraintes fonctionnelles

La qualité des données est essentielle pour garantir la fiabilité et la validité de n’importe quelle analyse ou modèle basé sur un jeu de données. L’application de contraintes fonctionnelles entre les colonnes d’un jeu de données peut contribuer à améliorer la qualité des données. Les contraintes fonctionnelles peuvent vous aider à garantir que les relations entre les colonnes sont cohérentes et correctes, ce qui peut entraîner des résultats plus justes dans votre analyse ou votre modèle.

La fonction drop_dependency_violations peut aider à appliquer des contraintes fonctionnelles entre les colonnes d’un jeu de données. Elle montre les lignes qui enfreignent une contrainte donnée. Étant donné une colonne déterminante et une colonne dépendante, cette fonction supprime les lignes avec des valeurs qui ne respectent pas la contrainte fonctionnelle entre les deux colonnes.

Cet extrait de code montre comment utiliser la fonction 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")

Ici, la fonction applique une contrainte fonctionnelle entre les colonnes ZIP (déterminante) et CITY (dépendante). Pour chaque valeur de la colonne déterminante, la valeur la plus courante de la colonne dépendante est sélectionnée, et toutes les lignes ayant d’autres valeurs sont supprimées. Par exemple, étant donné ce jeu de données, la ligne avec CITY = Seattle est supprimée, et la dépendance fonctionnelle ZIP -> CITY contient la sortie :

ZIP VILLE
12345 Seattle
12345 Boston
12345 Boston
98765 Baltimore
00000 San Francisco

La fonction drop_dependency_violations fournit l’option verbose permettant de contrôler le niveau de détail de sortie. En définissant verbose=1, vous pouvez voir le nombre de lignes supprimées. Une valeur verbose=2 affiche l’intégralité du contenu de ligne des lignes supprimées.

La fonction drop_dependency_violations peut appliquer des contraintes fonctionnelles entre les colonnes de votre jeu de données, ce qui peut améliorer la qualité des données et générer des résultats plus justes dans votre analyse ou votre modèle. Toutefois, vous devez prendre attentivement en compte le contexte de vos données et les contraintes fonctionnelles que vous choisissez d’appliquer, afin de veiller à ne pas supprimer par inadvertance des informations précieuses de votre jeu de données.