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
Obtenir un abonnement Microsoft Fabric. Ou, inscrivez-vous pour un essai gratuit de Microsoft Fabric.
Connectez-vous à Microsoft Fabric.
Utilisez le sélecteur d’expérience sur le côté gauche de votre page d’accueil pour passer à l’expérience science des données Synapse.
- 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é.
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.
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.