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 être utile pour l’ingénierie de caractéristiques, le nettoyage des données et la création 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 utiliserez 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édez à l'expérience Data Science 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, vous pouvez exécuter la commande :

python %pip install -U semantic-link  

Rechercher des dépendances fonctionnelles dans les données

La fonction find_dependencies dans SemPy détecte les dépendances fonctionnelles entre les colonnes d’un FabricDataFrame. La fonction utilise un seuil sur l’entropie conditionnelle pour découvrir des dépendances fonctionnelles approximatives, où l’entropie conditionnelle faible indique une forte dépendance entre les colonnes. Pour rendre la fonction find_dependencies plus sélective, vous pouvez définir un seuil inférieur sur l’entropie conditionnelle. Le seuil inférieur signifie que seules les dépendances plus fortes seront détectées.

L’extrait de code Python suivant illustre comment utiliser 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()

La fonction find_dependencies retourne un FabricDataFrame avec des dépendances détectées entre les colonnes. Les colonnes qui ont un mappage 1:1 sont représentées sous forme de liste. La fonction tente également d’élaguer les dépendances potentielles en supprimant les arêtes transitives.

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 entraîner des dépendances non transitives, comme dans l’exemple suivant :

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 l’exemple suivant :

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 à l’aide de 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.

L’extrait de code Python suivant illustre 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 apparaître sous différentes formes, comme des valeurs manquantes, des incohérences ou des inexactitudes. L’identification et la résolution de ces problèmes sont essentielles 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 être utile pour inspecter des dépendances approximatives et identifier des problèmes de qualité des données.

Le code suivant montre un exemple d’utilisation de 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 suppose qu’il existe une dépendance fonctionnelle entre les colonnes CODE POSTAL (déterminante) et VILLE (dépendante). Si le jeu de données présente des problèmes de qualité des données, tels que le même code postal attribué à plusieurs villes, la fonction génère les valeurs en violation suivantes :

ZIP VILLE count
12345 Boston 2
12345 Seattle 1

Cette sortie indique que le même code postal (12345) est attaché à deux villes différentes (Boston et Seattle), ce qui 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, montrer les valeurs mappées aux valeurs en violation, limiter le nombre de violations retournées et tirer les résultats en fonction du nombre ou de la colonne déterminante. (TODO : lien vers la documentation de l’API)

La sortie de list_dependency_violations peut aider à identifier les problèmes de qualité des données dans votre jeu de données. Toutefois, il est essentiel d’examiner attentivement les résultats et de 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. Ce plan d’action peut impliquer un nettoyage, une validation ou une exploration des données supplémentaires 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 avoir un impact négatif sur la fiabilité et la validité de n’importe quelle analyse ou modèle basé sur les données. L’identification et la résolution de ces problèmes sont essentielles pour garantir l’exactitude de vos résultats. 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 visualisation de ces violations peut fournir une meilleure compréhension des 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. En tenant compte d’une colonne déterminante et d’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.

Le code suivant montre un exemple d’utilisation de 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 suppose qu’il existe une dépendance fonctionnelle entre les colonnes CODE POSTAL (déterminante) et VILLE (dépendante). Si le jeu de données présente des problèmes de qualité des données, tels que le même code postal 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, montrer les valeurs mappées aux valeurs en violation, limiter le nombre de violations retournées et tirer les résultats en fonction du nombre ou de la colonne déterminante. (TODO : lien vers la documentation de l’API)

La visualisation générée par plot_dependency_violations peut vous aider à identifier les problèmes de qualité des données de votre jeu de données et à comprendre leur nature et leur étendue. En examinant le graphique, vous pouvez obtenir des insights sur les relations entre les colonnes déterminantes et dépendantes et identifier les erreurs ou incohérences potentielles dans vos données.

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. Il est possible d’améliorer la qualité des données en appliquant des contraintes fonctionnelles entre les colonnes d’un jeu de 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 exacts 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 en supprimant les lignes qui enfreignent une contrainte donnée. En tenant compte d’une colonne déterminante et d’une colonne dépendante, cette fonction supprime les lignes avec des valeurs qui ne respectent pas la contrainte fonctionnelle entre les deux colonnes.

Le code suivant montre un exemple d’utilisation de 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")

Dans cet exemple, la fonction applique une contrainte fonctionnelle entre les colonnes CODE POSTAL (déterminante) et VILLE (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, supposons le jeu de données suivant :

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

La ligne avec VILLE = Seattle est supprimée et la dépendance fonctionnelle CODE POSTAL -> VILLE contient la sortie.

La fonction drop_dependency_violations fournit l’option verbose pour contrôler la verbosité de la sortie. En définissant verbose=1, vous pouvez voir le nombre de lignes supprimées et verbose=2 vous permet de voir tout le contenu des lignes supprimées.

En utilisant la fonction drop_dependency_violations, vous pouvez appliquer des contraintes fonctionnelles entre les colonnes de votre jeu de données, ce qui peut améliorer la qualité des données et entraîner des résultats plus exacts dans votre analyse ou votre modèle. Toutefois, il est essentiel de prendre attentivement en compte le contexte de vos données et les contraintes fonctionnelles que vous choisissez d’appliquer pour vous assurer que vous ne supprimez pas par inadvertance des informations précieuses de votre jeu de données.