Del via


Oppdage, utforske og validere funksjonelle avhengigheter i dataene ved hjelp av semantisk kobling

Funksjonelle avhengigheter er relasjoner mellom kolonner i en tabell, der verdiene i én kolonne brukes til å bestemme verdiene i en annen kolonne. Å forstå disse avhengighetene kan hjelpe deg med å avdekke mønstre og relasjoner i dataene, noe som igjen kan hjelpe deg med funksjonsteknikk, datarengjøring og modellbyggingsoppgaver. Funksjonelle avhengigheter fungerer som en effektiv invariant som lar deg finne og løse problemer med datakvalitet som kan være vanskelig å oppdage ellers.

I denne artikkelen bruker du semantisk kobling til:

  • Finne avhengigheter mellom kolonner i en FabricDataFrame
  • Visualiser avhengigheter
  • Identifisere problemer med datakvalitet
  • Visualiser problemer med datakvalitet
  • Fremtving funksjonelle begrensninger mellom kolonner i et datasett

Forutsetning

  • Få et Microsoft Fabric-abonnement. Eller registrer deg for en gratis prøveversjon av Microsoft Fabric.

  • Logg på Microsoft Fabric.

  • Bruk opplevelsesbryteren nederst til venstre på hjemmesiden for å bytte til Fabric.

    Skjermbilde av menyen for opplevelsesbryteren, som viser hvor du velger Datavitenskap.

  • Gå til datavitenskapsopplevelsen som finnes i Microsoft Fabric.
  • Opprett en ny notatblokk for å kopiere/lime inn kode i celler.
  • For Spark 3.4 og nyere er Semantic-koblingen tilgjengelig i standard kjøretid når du bruker Fabric, og det er ikke nødvendig å installere den. Hvis du bruker Spark 3.3 eller nedenfor, eller hvis du vil oppdatere til den nyeste versjonen av Semantic Link, kan du kjøre kommandoen: python %pip install -U semantic-link  
  • Legg til et Lakehouse i notatblokken.

For Spark 3.4 og nyere er Semantic-koblingen tilgjengelig i standard kjøretid når du bruker Fabric, og det er ikke nødvendig å installere den. Hvis du bruker Spark 3.3 eller nedenfor, eller hvis du vil oppdatere til den nyeste versjonen av Semantic Link, kjører du denne kommandoen:

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

Funksjonen find_dependencies returnerer en FabricDataFrame med oppdagede avhengigheter mellom kolonner. En liste representerer kolonner som har en tilordning på 1:1. Funksjonen fjerner også transitive kanter, for å prøve å beskjære potensielle avhengigheter.

Når du angir dropna=True alternativet, fjernes rader som har en NaN-verdi i begge kolonnene fra evalueringen. Dette kan resultere i ikke-overførsomme avhengigheter, som vist i dette eksemplet:

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

I noen tilfeller kan avhengighetskjeden danne sykluser når du angir dropna=True alternativet, som vist i dette eksemplet:

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

Visualiser avhengigheter i data

Når du har funnet funksjonelle avhengigheter i et datasett (ved hjelp av find_dependencies), kan du visualisere avhengighetene med plot_dependency_metadata funksjonen. Denne funksjonen tar det resulterende FabricDataFrame fra find_dependencies og oppretter en visuell representasjon av avhengighetene mellom kolonner og grupper med kolonner.

Denne Python-kodesnutten viser hvordan du bruker 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)

Funksjonen plot_dependency_metadata genererer en visualisering som viser 1:1-grupperinger av kolonner. Kolonner som tilhører én enkelt gruppe, plasseres i én enkelt celle. Hvis ingen egnede kandidater blir funnet, returneres en tom FabricDataFrame.

Skjermbilde som viser utdataene til plot_dependencies-funksjonen.

Identifisere problemer med datakvalitet

Problemer med datakvalitet kan ha ulike skjemaer , for eksempel manglende verdier, inkonsekvenser eller unøyaktigheter. Identifisering og adressering av disse problemene er viktig for å sikre påliteligheten og gyldigheten til enhver analyse eller modell som er bygd på dataene. Én måte å oppdage problemer med datakvalitet på, er å undersøke brudd på funksjonelle avhengigheter mellom kolonner i et datasett.

Funksjonen list_dependency_violations kan bidra til å identifisere brudd på funksjonelle avhengigheter mellom datasettkolonner. Gitt en determinantkolonne og en avhengig kolonne, viser denne funksjonen verdier som bryter med den funksjonelle avhengigheten, sammen med antallet av de respektive forekomstene. Dette kan bidra til å undersøke omtrentlige avhengigheter og identifisere problemer med datakvalitet.

Denne kodesnutten list_dependency_violations viser hvordan du bruker funksjonen:

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 eksemplet forutsetter funksjonen en funksjonell avhengighet mellom KOLONNENE ZIP (determinant) og BY (avhengig). Hvis datasettet har problemer med datakvalitet – for eksempel det samme postnummeret som er tilordnet til flere byer – sender funksjonen ut dataene med problemene:

ZIP BY antall
12345 Boston 2
12345 Seattle 1

Denne utdataene indikerer at to forskjellige byer (Boston og Seattle) har samme postnummerverdi (12345). Dette tyder på et problem med datakvalitet i datasettet.

Funksjonen list_dependency_violations inneholder flere alternativer som kan håndtere manglende verdier, vise verdier som er tilordnet til brudd på verdier, begrense antall returnerte brudd og sortere resultatene etter antall eller determinantkolonne.

Utdataene list_dependency_violations kan hjelpe deg med å identifisere datakvalitetsproblemer med datasett. Du bør imidlertid undersøke resultatene nøye og vurdere konteksten til dataene, for å finne det mest hensiktsmessige handlingsforløp for å løse de identifiserte problemene. Denne fremgangsmåten kan innebære mer datarengjøring, validering eller utforskning for å sikre påliteligheten og gyldigheten til analysen eller modellen.

Visualiser problemer med datakvalitet

Problemer med datakvalitet kan skade påliteligheten og gyldigheten til enhver analyse eller modell som er bygget på disse dataene. Identifisering og adressering av disse problemene er viktig for å sikre nøyaktigheten av resultatene. Hvis du vil oppdage problemer med datakvalitet, kan du undersøke brudd på funksjonelle avhengigheter mellom kolonner i et datasett. Visualisering av disse bruddene kan vise problemene tydeligere, og hjelpe deg med å løse dem mer effektivt.

Funksjonen plot_dependency_violations kan bidra til å visualisere brudd på funksjonelle avhengigheter mellom kolonner i et datasett. Gitt en determinantkolonne og en avhengig kolonne, viser denne funksjonen de krenkende verdiene i et grafisk format, slik at det blir enklere å forstå innholdet og omfanget av problemene med datakvaliteten.

Denne kodesnutten plot_dependency_violations viser hvordan du bruker funksjonen:

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 eksemplet forutsetter funksjonen en eksisterende funksjonell avhengighet mellom KOLONNENE ZIP (determinant) og BY (avhengig). Hvis datasettet har problemer med datakvalitet – for eksempel det samme postnummeret som er tilordnet flere byer – genererer funksjonen en graf over de krenkende verdiene.

Funksjonen plot_dependency_violations inneholder flere alternativer som kan håndtere manglende verdier, vise verdier som er tilordnet til brudd på verdier, begrense antall returnerte brudd og sortere resultatene etter antall eller determinantkolonne.

Funksjonen plot_dependency_violations genererer en visualisering som kan bidra til å identifisere datakvalitetsproblemer med datasett. Du bør imidlertid undersøke resultatene nøye og vurdere konteksten til dataene, for å finne det mest hensiktsmessige handlingsforløp for å løse de identifiserte problemene. Denne fremgangsmåten kan innebære mer datarengjøring, validering eller utforskning for å sikre påliteligheten og gyldigheten til analysen eller modellen.

Skjermbilde som viser plot_dependency_violations funksjonsutdataene.

Fremtving funksjonelle begrensninger

Datakvalitet er avgjørende for å sikre påliteligheten og gyldigheten til enhver analyse eller modell som er bygget på et datasett. Håndheving av funksjonelle begrensninger mellom kolonner i et datasett kan bidra til å forbedre datakvaliteten. Funksjonelle begrensninger kan bidra til å sikre at relasjonene mellom kolonnene har nøyaktighet og konsekvens, noe som kan føre til mer nøyaktig analyse eller modellresultater.

Funksjonen drop_dependency_violations kan bidra til å fremtvinge funksjonelle begrensninger mellom kolonner i et datasett. Den slipper rader som bryter med en gitt betingelse. Gitt en determinantkolonne og en avhengig kolonne, fjerner denne funksjonen rader med verdier som ikke samsvarer med funksjonsbetingelsen mellom de to kolonnene.

Denne kodesnutten drop_dependency_violations viser hvordan du bruker funksjonen:

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 fremtvinger funksjonen en funksjonell begrensning mellom KOLONNENE ZIP (determinant) og BY (avhengig). For hver verdi av determinanten blir den vanligste verdien av den avhengige valgt, og alle rader med andre verdier slippes. For eksempel, gitt dette datasettet, vil raden med CITY = Seattle bli droppet, og den funksjonelle avhengigheten ZIP -> CITY har i utdataene:

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

Funksjonen drop_dependency_violations gir verbose mulighet til å kontrollere detaljnivået for utdata. Når du angir verbose=1, kan du se antall tapte rader. En verbose=2 verdi viser hele radinnholdet i de forkastede radene.

Funksjonen drop_dependency_violations kan fremtvinge funksjonelle begrensninger mellom kolonner i datasettet, noe som kan bidra til å forbedre datakvaliteten og føre til mer nøyaktige resultater i analysen eller modellen. Du må imidlertid nøye vurdere konteksten til dataene og de funksjonelle begrensningene du velger å håndheve, for å sikre at du ikke ved et uhell fjerner verdifull informasjon fra datasettet.