Freigeben über


Erkennen, Untersuchen und Überprüfen funktionaler Abhängigkeiten in Ihren Daten unter Verwendung von Semantic Link

Funktionale Abhängigkeiten sind Beziehungen zwischen Spalten einer Tabelle, wobei die Werte in einer Spalte verwendet werden, um die Werte in einer anderen zu bestimmen. Das Verständnis dieser Abhängigkeiten kann Ihnen helfen, Muster und Beziehungen in Ihren Daten aufzudecken, was für Feature Engineering, Datenbereinigung und Modellerstellung nützlich sein kann. Funktionale Abhängigkeiten fungieren als effektive Invariante, mit deren Hilfe Sie Probleme mit der Datenqualität entdecken und beheben können, die anders möglicherweise schwer zu erkennen wären.

In diesem Artikel verwenden Sie Semantic Link für Folgendes:

  • Suchen von Abhängigkeiten zwischen Spalten einer FabricDataFrame-Datenstruktur
  • Visualisieren von Abhängigkeiten
  • Identifizieren von Problemen mit der Datenqualität
  • Visualisieren von Problemen mit der Datenqualität
  • Erzwingen funktionaler Einschränkungen zwischen Spalten in einem Dataset

Voraussetzungen

  • Navigieren Sie zur Data Science-Benutzeroberfläche in Microsoft Fabric.
  • Erstellen Sie ein neues Notebook, um Code in Zellen zu kopieren und einzufügen.
  • Für Spark 3.4 und höher ist der semantische Link bei Verwendung von Fabric in der Standardlaufzeit verfügbar und muss nicht installiert werden. Wenn Sie Spark 3.3 oder darunter verwenden oder auf die neueste Version von Semantic Link aktualisieren möchten, können Sie den Befehl ausführen: python %pip install -U semantic-link  
  • Fügen Sie ein Lakehouse zum Notebook hinzu. Für Spark 3.4 und höher ist der semantische Link bei Verwendung von Fabric in der Standardlaufzeit verfügbar und muss nicht installiert werden. Wenn Sie Spark 3.3 oder darunter verwenden oder auf die neueste Version von Semantic Link aktualisieren möchten, können Sie den Befehl ausführen:

python %pip install -U semantic-link  

Finden funktionaler Abhängigkeiten

Die find_dependencies-Funktion in SemPy erkennt funktionale Abhängigkeiten zwischen den Spalten einer FabricDataFrame-Datenstruktur. Die Funktion verwendet einen Schwellenwert für bedingte Entropie, um ungefähre funktionale Abhängigkeiten zu ermitteln, wobei eine niedrige bedingte Entropie eine starke Abhängigkeit zwischen Spalten nahelegt. Um die find_dependencies-Funktion selektiver zu gestalten, können Sie einen niedrigeren Schwellenwert für bedingte Entropie festlegen. Der niedrigere Schwellenwert bedeutet, dass nur stärkere Abhängigkeiten erkannt werden.

Der folgende Python-Codeschnipsel veranschaulicht die Verwendung von 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()

Die find_dependencies-Funktion gibt eine FabricDataFrame-Datenstruktur mit erkannten Abhängigkeiten zwischen Spalten zurück. Spalten mit einer 1:1 -Zuordnung werden als Liste dargestellt. Die Funktion versucht außerdem, die potenziellen Abhängigkeiten zu löschen, indem transitive Kantenentfernt werden.

Wenn Sie die Option dropna=True angeben, werden Zeilen mit einem NaN-Wert in beiden Spalten aus der Auswertung entfernt. Dies kann dazu führen, dass Abhängigkeiten nichttransitiv sind, wie das folgende Beispiel zeigt:

H B C
1 1 1
1 1 1
1 NaN 9
2 NaN 2
2 2 2

In einigen Fällen kann die Abhängigkeitskette Zyklen bilden, wenn Sie die Option dropna=True angeben, wie das folgende Beispiel zeigt:

H B C
1 1 NaN
2 1 NaN
NaN 1 1
NaN 2 1
1 NaN 1
1 NaN 2

Visualisieren von Abhängigkeiten in Daten

Nachdem Sie funktionsbezogene Abhängigkeiten in einem Dataset (mithilfe von find_dependencies) gefunden haben, können Sie die Abhängigkeiten mithilfe der plot_dependency_metadata-Funktion visualisieren. Diese Funktion verwendet die aus find_dependencies resultierende FabricDataFrame-Datenstruktur und erstellt eine visuelle Darstellung der Abhängigkeiten zwischen Spalten und Spaltengruppen.

Der folgende Python-Codeschnipsel veranschaulicht die Verwendung von 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)

Die plot_dependency_metadata-Funktion generiert eine Visualisierung, die die 1:1-Gruppierungen von Spalten anzeigt. Spalten, die zu einer einzelnen Gruppe gehören, werden in eine einzelne Zelle eingefügt. Wenn keine geeigneten Kandidaten gefunden werden, wird eine leere FabricDataFrame-Datenstruktur zurückgegeben.

Screenshot der Ausgabe der plot_dependencies-Funktion.

Identifizieren von Problemen mit der Datenqualität

Probleme mit der Datenqualität können verschiedene Formen annehmen, z. B. fehlende Werte, Inkonsistenzen oder Ungenauigkeiten. Die Identifizierung und Behebung solcher Probleme ist entscheidend, um die Zuverlässigkeit und Gültigkeit von Analysen oder Modellen zu gewährleisten, die auf diesen Daten basieren. Eine Möglichkeit zum Erkennen von Problemen mit der Datenqualität besteht darin, Verstöße gegen funktionale Abhängigkeiten zwischen Spalten in einem Dataset zu untersuchen.

Die list_dependency_violations-Funktion kann Ihnen helfen, Verstöße gegen funktionsbezogene Abhängigkeiten zwischen Spalten in einem Dataset zu identifizieren. Diese Funktion zeigt auf Basis einer Determinanten- und einer abhängigen Spalte Werte an, die gegen die funktionale Abhängigkeit verstoßen, und gibt außerdem die Häufigkeit des jeweiligen Auftretens an. Dies kann nützlich sein, um ungefähre Abhängigkeiten zu untersuchen und Probleme mit der Datenqualität zu identifizieren.

Der folgende Code veranschaulicht beispielhaft die Verwendung der list_dependency_violations-Funktion:

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")

In diesem Beispiel wird davon ausgegangen, dass es eine funktionale Abhängigkeit zwischen der ZIP-Spalte (Determinante) und der (abhängigen) CITY-Spalte gibt. Wenn das Dataset Probleme mit der Datenqualität aufweist, z. B. derselbe ZIP-Code (Postleitzahl) mehreren Städten zugewiesen wird, gibt die Funktion die verstoßenden Werte aus:

ZIP CITY count
12345 Boston 2
12345 Seattle 1

Diese Ausgabe zeigt, dass der gleiche ZIP-Code (12345) an zwei verschiedene Städte (Boston und Seattle) angefügt ist, was für ein Problem mit der Datenqualität innerhalb des Datasets spricht.

Die list_dependency_violations-Funktion bietet weitere Optionen für die Behandlung fehlender Werte, das Anzeigen von Werten, die einem Verstoß gegen Werte zugeordnet sind, das Begrenzen der Anzahl der zurückgegebenen Verstöße und das Sortieren der Ergebnisse nach Anzahl oder Determinantenspalte. (TODO: Link zu API-Dokument)

Die Ausgabe von list_dependency_violations kann dabei helfen, Probleme mit der Datenqualität in Ihrem Dataset zu identifizieren. Es ist jedoch wichtig, die Ergebnisse sorgfältig zu untersuchen und den Kontext Ihrer Daten zu berücksichtigen, um diejenigen Maßnahmen zu ermitteln, die für die Behandlung der identifizierten Probleme am besten geeignet sind. Diese Vorgehensweise kann eine weitere Datenbereinigung, Validierung oder Untersuchung umfassen, um die Zuverlässigkeit und Gültigkeit Ihrer Analyse oder Ihres Modells sicherzustellen.

Visualisieren von Problemen mit der Datenqualität

Probleme mit der Datenqualität können sich negativ auf die Zuverlässigkeit und Gültigkeit einer Analyse oder eines Modells auswirken, die auf den Daten basieren. Das Identifizieren und Beheben dieser Probleme ist entscheidend, um die Genauigkeit Ihrer Ergebnisse sicherzustellen. Eine Möglichkeit zum Erkennen von Problemen mit der Datenqualität besteht darin, Verstöße gegen funktionale Abhängigkeiten zwischen Spalten in einem Dataset zu untersuchen. Die Visualisierung dieser Verstöße kann Ihnen helfen, die Probleme besser zu verstehen und effektiver zu beheben.

Die plot_dependency_violations-Funktion kann Ihnen helfen, Verstöße gegen funktionsbezogene Abhängigkeiten zwischen Spalten in einem Dataset zu visualisieren. Diese Funktion zeigt auf Basis einer Determinanten- und einer abhängigen Spalte die verstoßenden Werte in einem grafischen Format an, wodurch die Art und das Ausmaß der Probleme mit der Datenqualität leichter zu verstehen sind.

Der folgende Code veranschaulicht beispielhaft die Verwendung der plot_dependency_violations-Funktion:

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")

In diesem Beispiel wird davon ausgegangen, dass es eine funktionale Abhängigkeit zwischen der ZIP-Spalte (Determinante) und der (abhängigen) CITY-Spalte gibt. Wenn das Dataset Probleme mit der Datenqualität aufweist, z. B. derselbe ZIP-Code (Postleitzahl) mehreren Städten zugewiesen wird, erstellt die Funktion aus den verstoßenden Werte ein Diagramm.

Die plot_dependency_violations-Funktion bietet weitere Optionen für die Behandlung fehlender Werte, das Anzeigen von Werten, die einem Verstoß gegen Werte zugeordnet sind, das Begrenzen der Anzahl der zurückgegebenen Verstöße und das Sortieren der Ergebnisse nach Anzahl oder Determinantenspalte. (TODO: Link zu API-Dokument)

Die von plot_dependency_violations generierte Visualisierung kann Ihnen helfen, Probleme mit der Datenqualität in Ihrem Dataset zu identifizieren sowie Art und Umfang zu verstehen. Durch Untersuchen des Diagramms können Sie Erkenntnisse hinsichtlich der Beziehungen zwischen Determinanten und abhängigen Spalten gewinnen und potenzielle Fehler oder Inkonsistenzen in Ihren Daten identifizieren.

Screenshot der Ausgabe der plot_dependency_violations-Funktion.

Erzwingen funktionaler Einschränkungen

Datenqualität ist ein entscheidender Faktor, um die Zuverlässigkeit und Gültigkeit von Analysen oder Modellen zu gewährleisten, die auf einem Dataset basieren. Eine Möglichkeit zur Verbesserung der Datenqualität besteht darin, in einem Dataset funktionale Einschränkungen zwischen Spalten zu erzwingen. Funktionale Einschränkungen können sicherstellen, dass die Beziehungen zwischen Spalten stets konsistent und korrekt sind, was zu genaueren Ergebnissen in Ihrer Analyse oder Ihrem Modell führen kann.

Die drop_dependency_violations-Funktion kann dazu beitragen, funktionale Einschränkungen zwischen Spalten in einem Dataset zu erzwingen, indem Zeilen verworfen werden, die gegen eine vorgegebene Einschränkung verstoßen. Diese Funktion entfernt auf Basis einer Determinanten- und einer abhängigen Spalte Zeilen mit Werten, die nicht der funktionalen Einschränkung zwischen den beiden Spalten entsprechen.

Der folgende Code veranschaulicht beispielhaft die Verwendung der drop_dependency_violations-Funktion:

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")

In diesem Beispiel erzwingt die Funktion eine funktionale Einschränkung zwischen der ZIP-Spalte (Determinante) und der (abhängigen) CITY-Spalte gibt. Für jeden Wert der Determinante wird der am häufigsten verwendete Wert des abhängigen Werts ausgewählt, und alle Zeilen mit anderen Werten werden verworfen. Hier ein Beispiel mit dem folgenden Dataset:

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

Die Zeile mit „CITY=Seattle“ würde verworfen werden, und die funktionale Abhängigkeit ZIP -> CITY wird in der Ausgabe beibehalten.

Die drop_dependency_violations-Funktion stellt die Option verbose zum Steuern der Ausführlichkeit der Ausgabe bereit. Wenn Sie verbose=1 festlegen, können Sie die Anzahl der verworfen Zeilen sehen. Mithilfe von verbose=2 können Sie den gesamten Zeileninhalt der abgelegten Zeilen anzeigen.

Mithilfe der drop_dependency_violations-Funktion können Sie funktionale Einschränkungen zwischen Spalten in Ihrem Dataset erzwingen, wodurch die Datenqualität verbessert wird und Sie bessere Ergebnisse in Ihrer Analyse oder mit Ihrem Modell erreichen können. Es ist jedoch wichtig, den Kontext Ihrer Daten und die funktionalen Einschränkungen, die Sie erzwingen möchten, genau zu bedenken, um sicherzustellen, dass Sie nicht versehentlich wertvolle Informationen aus Ihrem Dataset entfernen.