Del via


Registrer, udforsk og valider funktionelle afhængigheder i dine data ved hjælp af semantisk link

Funktionelle afhængigheder er relationer mellem kolonner i en tabel, hvor værdierne i én kolonne bruges til at bestemme værdierne i en anden kolonne. Hvis du forstår disse afhængigheder, kan det hjælpe dig med at afdække mønstre og relationer i dine data, hvilket igen kan hjælpe med funktionskonstruktion, datarensning og modelopbygningsopgaver. Funktionelle afhængigheder fungerer som en effektiv invariant, der giver dig mulighed for at finde og løse problemer med datakvaliteten, som ellers kan være svære at registrere.

I denne artikel skal du bruge semantisk link til:

  • Find afhængigheder mellem kolonner i en FabricDataFrame
  • Visualiser afhængigheder
  • Identificer problemer med datakvalitet
  • Visualiser problemer med datakvalitet
  • Gennemtving funktionelle begrænsninger mellem kolonner i et datasæt

Forudsætninger

  • Få et Microsoft Fabric-abonnement. Du kan også tilmelde dig en gratis Prøveversion af Microsoft Fabric.

  • Log på Microsoft Fabric.

  • Brug oplevelsesskifteren nederst til venstre på startsiden til at skifte til Fabric.

    Skærmbillede af menuen til skift af oplevelse, der viser, hvor du skal vælge Datavidenskab.

  • Gå til datavidenskabsoplevelsen, der findes i Microsoft Fabric.
  • Opret en ny notesbog for at kopiere/indsætte kode i celler.
  • For Spark 3.4 og nyere er Semantic-link tilgængeligt i standardkørslen, når du bruger Fabric, og det er ikke nødvendigt at installere det. Hvis du bruger Spark 3.3 eller nedenfor, eller hvis du vil opdatere til den nyeste version af Semantic Link, kan du køre kommandoen: python %pip install -U semantic-link  
  • Føj et Lakehouse til din notesbog.

For Spark 3.4 og nyere er Semantic-link tilgængeligt i standardkørslen, når du bruger Fabric, og det er ikke nødvendigt at installere det. Hvis du bruger Spark 3.3 eller nedenfor, eller hvis du vil opdatere til den nyeste version af Semantic Link, skal du køre denne kommando:

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

Funktionen find_dependencies returnerer en FabricDataFrame med registrerede afhængigheder mellem kolonner. En liste repræsenterer kolonner, der har en 1:1-tilknytning. Funktionen fjerner også transitive kanter for at forsøge at beskære de potentielle afhængigheder.

Når du angiver indstillingen dropna=True , fjernes rækker, der har en NaN-værdi i en af kolonnerne, fra evalueringen. Dette kan resultere i ikke-transitive afhængigheder, som vist i dette eksempel:

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

I nogle tilfælde kan afhængighedskæden danne cyklusser, når du angiver indstillingen dropna=True , som vist i dette eksempel:

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

Visualiser afhængigheder i data

Når du har fundet funktionelle afhængigheder i et datasæt (ved hjælp af find_dependencies), kan du visualisere afhængighederne med plot_dependency_metadata funktionen . Denne funktion tager den resulterende FabricDataFrame fra find_dependencies og opretter en visuel repræsentation af afhængighederne mellem kolonner og grupper af kolonner.

Dette Python-kodestykke viser, hvordan du bruger 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)

Funktionen plot_dependency_metadata genererer en visualisering, der viser 1:1-grupperinger af kolonner. Kolonner, der tilhører en enkelt gruppe, placeres i en enkelt celle. Hvis der ikke findes nogen egnede kandidater, returneres der en tom FabricDataFrame.

Skærmbillede, der viser outputtet fra funktionen plot_dependencies.

Identificer problemer med datakvalitet

Problemer med datakvaliteten kan have forskellige former – f.eks. manglende værdier, uoverensstemmelser eller unøjagtigheder. Det er vigtigt at identificere og løse disse problemer for at sikre pålideligheden og gyldigheden af alle analyser eller modeller, der er baseret på dataene. En måde at registrere problemer med datakvaliteten på er ved at undersøge overtrædelser af funktionelle afhængigheder mellem kolonner i et datasæt.

Funktionen list_dependency_violations kan hjælpe med at identificere overtrædelser af funktionelle afhængigheder mellem datasætkolonner. Med en determinant kolonne og en afhængig kolonne viser denne funktion værdier, der overtræder den funktionelle afhængighed, sammen med antallet af deres respektive forekomster. Dette kan hjælpe med at undersøge omtrentlige afhængigheder og identificere problemer med datakvaliteten.

Dette kodestykke viser, hvordan du bruger funktionen 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")

I dette eksempel forudsætter funktionen en funktionel afhængighed mellem kolonnerne ZIP (determinant) og CITY (afhængig). Hvis datasættet har problemer med datakvaliteten – f.eks. det samme postnummer, der er tildelt til flere byer – returnerer funktionen dataene med problemerne:

ZIP CITY antal
12345 Boston 2
12345 Seattle 1

Dette output angiver, at to forskellige byer (Boston og Seattle) har samme postnummerværdi (12345). Dette antyder et problem med datakvaliteten i datasættet.

Funktionen list_dependency_violations indeholder flere indstillinger, der kan håndtere manglende værdier, vise værdier, der er knyttet til krænkende værdier, begrænse antallet af returnerede overtrædelser og sortere resultaterne efter optællings- eller determinantkolonne.

Outputtet list_dependency_violations kan hjælpe med at identificere problemer med datasættets kvalitet. Du bør dog nøje undersøge resultaterne og overveje konteksten af dine data for at finde ud af, hvilken fremgangsmåde der er bedst til at løse de identificerede problemer. Denne fremgangsmåde kan omfatte mere datarensning, validering eller udforskning for at sikre pålideligheden og gyldigheden af din analyse eller model.

Visualiser problemer med datakvalitet

Problemer med datakvaliteten kan beskadige pålideligheden og gyldigheden af alle analyser eller modeller, der er baseret på disse data. Det er vigtigt at identificere og løse disse problemer for at sikre nøjagtigheden af dine resultater. Hvis du vil registrere problemer med datakvaliteten, kan du undersøge overtrædelser af funktionelle afhængigheder mellem kolonner i et datasæt. Visualisering af disse overtrædelser kan vise problemerne tydeligere og hjælpe dig med at håndtere dem mere effektivt.

Funktionen plot_dependency_violations kan hjælpe med at visualisere overtrædelser af funktionelle afhængigheder mellem kolonner i et datasæt. I betragtning af en determinant kolonne og en afhængig kolonne viser denne funktion de krænkende værdier i et grafisk format for at gøre det nemmere at forstå arten og omfanget af problemer med datakvaliteten.

Dette kodestykke viser, hvordan du bruger funktionen 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")

I dette eksempel forudsætter funktionen en eksisterende funktionel afhængighed mellem kolonnerne ZIP (determinant) og CITY (afhængig). Hvis datasættet har problemer med datakvaliteten – f.eks. det samme postnummer, der er tildelt til flere byer – genererer funktionen en graf over de krænkende værdier.

Funktionen plot_dependency_violations indeholder flere indstillinger, der kan håndtere manglende værdier, vise værdier, der er knyttet til krænkende værdier, begrænse antallet af returnerede overtrædelser og sortere resultaterne efter optællings- eller determinantkolonne.

Funktionen plot_dependency_violations genererer en visualisering, der kan hjælpe med at identificere problemer med datasæts kvalitet. Du bør dog nøje undersøge resultaterne og overveje konteksten af dine data for at finde ud af, hvilken fremgangsmåde der er bedst til at løse de identificerede problemer. Denne fremgangsmåde kan omfatte mere datarensning, validering eller udforskning for at sikre pålideligheden og gyldigheden af din analyse eller model.

Skærmbillede, der viser outputtet for funktionen plot_dependency_violations.

Gennemtving funktionelle begrænsninger

Datakvaliteten er afgørende for at sikre pålideligheden og gyldigheden af enhver analyse eller model, der er baseret på et datasæt. Håndhævelse af funktionelle begrænsninger mellem kolonner i et datasæt kan hjælpe med at forbedre datakvaliteten. Funktionelle begrænsninger kan hjælpe med at sikre, at relationerne mellem kolonner har nøjagtighed og ensartethed, hvilket kan føre til mere nøjagtige analyser eller modelresultater.

Funktionen drop_dependency_violations kan hjælpe med at gennemtvinge funktionelle begrænsninger mellem kolonner i et datasæt. Den dropper rækker, der overtræder en given begrænsning. Med en determinantkolonne og en afhængig kolonne fjerner denne funktion rækker med værdier, der ikke er i overensstemmelse med den funktionelle begrænsning mellem de to kolonner.

Dette kodestykke viser, hvordan du bruger funktionen 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")

Her gennemtvinger funktionen en funktionel begrænsning mellem kolonnerne ZIP (determinant) og CITY (afhængig). For hver værdi af determinanten vælges den mest almindelige værdi for den afhængige, og alle rækker med andre værdier fjernes. På grund af dette datasæt vil rækken med CITY=Seattle f.eks. blive droppet, og zip'en for den funktionelle afhængighed –> CITY har i outputtet:

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

Funktionen drop_dependency_violations giver mulighed for verbose at styre outputversiteten. Ved at angive verbose=1kan du se antallet af tabte rækker. En verbose=2 værdi viser hele rækkeindholdet i de tabte rækker.

Funktionen drop_dependency_violations kan gennemtvinge funktionelle begrænsninger mellem kolonner i dit datasæt, hvilket kan hjælpe med at forbedre datakvaliteten og føre til mere nøjagtige resultater i din analyse eller model. Du skal dog nøje overveje konteksten af dine data og de funktionelle begrænsninger, du vælger at gennemtvinge, for at sikre, at du ikke ved et uheld fjerner værdifulde oplysninger fra dit datasæt.