Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie funktionale Abhängigkeiten, um Daten zu bereinigen. Eine funktionale Abhängigkeit ist vorhanden, wenn eine Spalte in einem semantischen Modell (ein Power BI-Dataset) von einer anderen Spalte abhängt. Beispielsweise kann eine ZIP code Spalte den Wert in einer city Spalte bestimmen. Eine funktionale Abhängigkeit wird als 1:n-Beziehung zwischen Werten in zwei oder mehr Spalten in einer DataFrame. In diesem Lernprogramm wird das Synthea-Dataset verwendet, um zu zeigen, wie funktionsbezogene Abhängigkeiten helfen, Probleme mit der Datenqualität zu erkennen.
In diesem Lernprogramm erfahren Sie, wie Sie:
- Wenden Sie Domänenwissen auf Formhypothes zu funktionalen Abhängigkeiten in einem semantischen Modell an.
- Machen Sie sich mit Komponenten der Semantic Link Python-Bibliothek (SemPy) vertraut, die die Datenanalyse automatisieren. Zu diesen Komponenten gehören:
-
FabricDataFrame— eine Panda-ähnliche Struktur mit zusätzlichen semantischen Informationen. - Funktionen, die die Auswertung von Hypothesen zu funktionsbezogenen Abhängigkeiten automatisieren und Verstöße in Ihren semantischen Modellen identifizieren.
-
Voraussetzungen
Abonnieren Sie ein Microsoft Fabric-Abonnement. Oder registrieren Sie sich für eine kostenlose Microsoft Fabric-Testversion.
Melden Sie sich bei Microsoft Fabrican.
Wechseln Sie zu Fabric, indem Sie den Benutzeroberflächenschalter auf der unteren linken Seite Ihrer Startseite verwenden.
- Wählen Sie im Navigationsbereich Arbeitsbereiche aus, und wählen Sie dann Ihren Arbeitsbereich aus, um ihn als aktuellen Arbeitsbereich festzulegen.
Durchführung im Notebook
Verwenden Sie das data_cleaning_functional_dependencies_tutorial.ipynb-Notizbuch , um diesem Lernprogramm zu folgen.
Zum Öffnen des zugehörigen Notizbuchs für dieses Lernprogramm folgen Sie den Anweisungen in Vorbereiten Ihres Systems für Data Science-Lernprogramme, um das Notizbuch in Ihren Arbeitsbereich zu importieren.
Wenn Sie den Code lieber von dieser Seite kopieren und einfügen möchten, können Sie ein neues Notizbucherstellen.
Fügen Sie ein Lakehouse an das Notebook an, bevor Sie mit der Ausführung von Code beginnen.
Einrichten des Notizbuchs
In diesem Abschnitt richten Sie eine Notizbuchumgebung ein.
Überprüfen Sie Ihre Spark-Version. Wenn Sie Spark 3.4 oder höher in Microsoft Fabric verwenden, ist der semantische Link standardmäßig enthalten, sodass Sie ihn nicht installieren müssen. Wenn Sie Spark 3.3 oder früher verwenden oder auf den neuesten semantischen Link aktualisieren möchten, führen Sie den folgenden Befehl aus.
%pip install -U semantic-linkImportieren Sie die module, die Sie in diesem Notizbuch verwenden.
import pandas as pd import sempy.fabric as fabric from sempy.fabric import FabricDataFrame from sempy.dependencies import plot_dependency_metadataLaden Sie die Beispieldaten herunter. In diesem Tutorial verwenden Sie das Synthea-Dataset synthetischer medizinischer Daten (kleine Version für die Einfachheit).
download_synthea(which='small')
Erkunden der Daten
Initialisieren Sie ein
FabricDataFramemit dem Inhalt der Datei providers.csv.providers = FabricDataFrame(pd.read_csv("synthea/csv/providers.csv")) providers.head()Überprüfen Sie auf Datenqualitätsprobleme mit der Funktion von SemPy
find_dependencies, indem Sie ein Diagramm von automatisch erkannten Funktionsabhängigkeiten darstellen.deps = providers.find_dependencies() plot_dependency_metadata(deps)Das Diagramm zeigt, dass
IdbestimmtNAMEundORGANIZATION. Dieses Ergebnis wird erwartet, daIdeinzigartig ist.Bestätigen Sie, dass
Ideindeutig ist.providers.Id.is_uniqueDer Code gibt
Truezurück, um zu bestätigen, dassIdeindeutig ist.
Analysieren funktionaler Abhängigkeiten im Detail
Das Diagramm mit funktionalen Abhängigkeiten zeigt auch, dass ORGANIZATIONADDRESS und ZIPwie erwartet bestimmt. Möglicherweise erwarten Sie jedoch, dass ZIP auch CITYbestimmen, aber der gestrichelte Pfeil weist darauf hin, dass die Abhängigkeit nur ungefähr ist und auf ein Problem mit der Datenqualität verweist.
Es gibt weitere Besonderheiten im Diagramm. Beispielsweise bestimmt NAME nicht GENDER, Id, SPECIALITYoder ORGANIZATION. Jede dieser Besonderheiten kann eine Untersuchung wert sein.
- Werfen Sie einen tieferen Blick auf die ungefähre Beziehung zwischen
ZIPundCITYindem Sie semPyslist_dependency_violationsFunktion verwenden, um die Verletzungen auflisten zu können:
providers.list_dependency_violations('ZIP', 'CITY')
- Zeichnen Sie ein Diagramm mit der
plot_dependency_violationsVisualisierungsfunktion von SemPy. Dieses Diagramm ist hilfreich, wenn die Anzahl der Verletzungen klein ist:
providers.plot_dependency_violations('ZIP', 'CITY')
Die Darstellung von Abhängigkeitsverstößen zeigt Werte für ZIP auf der linken Seite und Werte für CITY auf der rechten Seite an. Ein Rand verbindet eine Postleitzahl auf der linken Seite des Grundstücks mit einer Stadt auf der rechten Seite, wenn eine Zeile mit diesen beiden Werten enthält. Die Ränder werden mit der Anzahl solcher Zeilen beschriftet. Beispielsweise gibt es zwei Zeilen mit Postleitzahl 02747-1242, eine Zeile mit der Stadt "NORTH DARTHMOUTH" und die andere mit der Stadt "DARTHMOUTH", wie in der vorherigen Zeichnung und dem folgenden Code gezeigt:
- Bestätigen Sie die Beobachtungen aus der Zeichnung, indem Sie den folgenden Code ausführen:
providers[providers.ZIP == '02747-1242'].CITY.value_counts()
Das Diagramm zeigt auch, dass von den Zeilen, die
CITYals "DARTHMOUTH" haben, neun Zeilen einZIPvon 02747-1262 aufweisen. Eine Zeile hat einZIPvon 02747-1242. Eine Zeile hat einenZIPvon 02747-2537. Bestätigen Sie diese Beobachtungen mit dem folgenden Code:providers[providers.CITY == 'DARTHMOUTH'].ZIP.value_counts()Es gibt andere Postleitzahlen, die mit "DARTMOUTH" verknüpft sind, aber diese Postleitzahlen werden nicht im Diagramm der Abhängigkeitsverstöße angezeigt, da sie keine Hinweise auf Probleme mit der Datenqualität geben. Die Postleitzahl "02747-4302" ist beispielsweise eindeutig mit "DARTMOUTH" verknüpft und wird nicht im Diagramm der Abhängigkeitsverstöße angezeigt. Bestätigen Sie, indem Sie den folgenden Code ausführen:
providers[providers.ZIP == '02747-4302'].CITY.value_counts()
Zusammenfassen von Problemen mit der Datenqualität, die mit SemPy erkannt wurden
Das Diagramm "Abhängigkeitsverstöße" zeigt mehrere Probleme mit der Datenqualität in diesem semantischen Modell:
- Einige Stadtnamen sind Großbuchstaben. Verwenden Sie Zeichenfolgenmethoden, um dieses Problem zu beheben.
- Einige Stadtnamen haben Zusätze (oder Präfixe), wie beispielsweise "Nord" und "Ost". Beispielsweise wird die POSTLEITZAHL "2128" einmal "EAST BOSTON" und einmal "BOSTON" zugeordnet. Ein ähnliches Problem tritt zwischen "NORTH DARTMOUTH" und "DARTMOUTH" auf. Entfernen Sie diese Qualifizierungen oder ordnen Sie die Postleitzahlen der Stadt mit der häufigsten Häufigkeit zu.
- Es gibt Tippfehler in einigen Stadtnamen, wie "PITTSFIELD" vs. "PITTSFILED" und "NEWBURGPORT" vs. "NEWBURYPORT". Korrigieren Sie für "NEWBURGPORT" diesen Tippfehler mithilfe des häufigsten Vorkommens. Bei "PITTSFIELD" mit jeweils nur einem Vorkommen ist die automatische Auflösung von Mehrdeutigkeiten ohne externe Kenntnisse oder ein Sprachmodell deutlich schwieriger.
- Manchmal werden Präfixe wie "West" mit dem einzelnen Buchstaben "W" abgekürzt. Ersetzen Sie "W" durch "West", wenn alle Vorkommen von "W" für "West" stehen.
- Die Postleitzahl "02130" wird einmal "BOSTON" und einmal "Jamaica Plain" zugeordnet. Dieses Problem ist nicht einfach zu beheben. Mit weiteren Daten ordnen Sie sich dem am häufigsten vorkommenden Vorkommen zu.
Bereinigen der Daten
Korrigieren Sie die Großschreibung, indem Sie Werte in die Titel-Schreibweise ändern.
providers['CITY'] = providers.CITY.str.title()Führen Sie die Erkennung von Verstößen erneut aus, um zu bestätigen, dass weniger Mehrdeutigkeiten vorhanden sind.
providers.list_dependency_violations('ZIP', 'CITY')
Verfeinern Sie die Daten manuell, oder legen Sie Zeilen ab, die funktionsbedingte Einschränkungen zwischen Spalten verletzen, indem Sie die Funktion SemPy verwenden drop_dependency_violations .
Wählt für jeden Wert der Determinantenvariablen drop_dependency_violations den am häufigsten verwendeten Wert der abhängigen Variablen aus und legt alle Zeilen mit anderen Werten ab. Wenden Sie diesen Vorgang nur an, wenn Sie sicher sind, dass diese statistische Heuristik zu korrekten Ergebnissen für Ihre Daten führt. Schreiben Sie andernfalls Ihren eigenen Code, um die erkannten Verstöße zu behandeln.
Führen Sie die
drop_dependency_violations-Funktion auf denZIP- undCITY-Spalten aus.providers_clean = providers.drop_dependency_violations('ZIP', 'CITY')Listet alle Abhängigkeitsverletzungen zwischen
ZIPundCITY.providers_clean.list_dependency_violations('ZIP', 'CITY')
Der Code gibt eine leere Liste zurück, um anzugeben, dass es keine weiteren Verstöße gegen die funktionale Einschränkung ZIP -> CITYgibt.
Verwandte Inhalte
Weitere Lernprogramme zu semantischen Links oder SemPy finden Sie hier:
- Lernprogramm: Analysieren funktionaler Abhängigkeiten in einem Beispielsemantikmodell
- Lernprogramm: Extrahieren und Berechnen von Power BI-Measures aus einem Jupyter-Notizbuch
- Lernprogramm: Entdecken von Beziehungen in einem semantischen Modell mit semantischer Verknüpfung
- Lernprogramm: Entdecken von Beziehungen im Synthea-Dataset mit semantischer Verknüpfung
- Lernprogramm: Überprüfen von Daten mithilfe von SemPy and Great Expectations (GX)