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.
- 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.
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.
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.