Dela via


Identifiera, utforska och validera funktionella beroenden i dina data med hjälp av semantisk länk

Funktionella beroenden är relationer mellan kolumner i en tabell, där värdena i en kolumn används för att fastställa värdena i en annan kolumn. Att förstå dessa beroenden kan hjälpa dig att hitta mönster och relationer i dina data, vilket i sin tur kan hjälpa dig med funktionsutveckling, datarensning och modellskapande uppgifter. Funktionella beroenden fungerar som en effektiv invariant som gör att du kan hitta och åtgärda problem med datakvalitet som kan vara svåra att identifiera annars.

I den här artikeln använder du semantisk länk för att:

  • Hitta beroenden mellan kolumner i en FabricDataFrame
  • Visualisera beroenden
  • Identifiera problem med datakvalitet
  • Visualisera problem med datakvalitet
  • Framtvinga funktionella begränsningar mellan kolumner i en datauppsättning

Förutsättningar

  • Gå till den Datavetenskap upplevelse som finns i Microsoft Fabric.
  • Skapa en ny anteckningsbok för att kopiera/klistra in kod i celler.
  • För Spark 3.4 och senare är Semantic-länken tillgänglig i standardkörningen när du använder Infrastrukturresurser, och du behöver inte installera den. Om du använder Spark 3.3 eller senare, eller om du vill uppdatera till den senaste versionen av Semantic Link, kan du köra kommandot: python %pip install -U semantic-link  
  • Lägg till en Lakehouse i anteckningsboken.

För Spark 3.4 och senare är Semantic-länken tillgänglig i standardkörningen när du använder Infrastrukturresurser, och du behöver inte installera den. Om du använder Spark 3.3 eller senare, eller om du vill uppdatera till den senaste versionen av Semantic Link, kör du det här kommandot:

%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 returnerar en FabricDataFrame med identifierade beroenden mellan kolumner. En lista representerar kolumner som har en 1:1-mappning. Funktionen tar också bort transitiva kanter för att försöka rensa potentiella beroenden.

När du anger alternativet dropna=True elimineras rader som har ett NaN-värde i någon av kolumnerna från utvärderingen. Detta kan resultera i icke-transitiva beroenden, som du ser i det här exemplet:

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

I vissa fall kan beroendekedjan bilda cykler när du anger alternativet dropna=True , som du ser i det här exemplet:

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

Visualisera beroenden i data

När du har hittat funktionella beroenden i en datauppsättning (med hjälp av find_dependencies) kan du visualisera beroendena med plot_dependency_metadata funktionen. Den här funktionen tar den resulterande FabricDataFrame från find_dependencies och skapar en visuell representation av beroendena mellan kolumner och grupper av kolumner.

Det här Python-kodfragmentet visar hur du använder 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 genererar en visualisering som visar 1:1-grupper av kolumner. Kolumner som tillhör en enskild grupp placeras i en enda cell. Om inga lämpliga kandidater hittas returneras en tom FabricDataFrame.

Skärmbild som visar utdata från funktionen plot_dependencies.

Identifiera problem med datakvalitet

Problem med datakvalitet kan ha olika formulär, till exempel saknade värden, inkonsekvenser eller felaktigheter. Det är viktigt att identifiera och åtgärda dessa problem för att säkerställa tillförlitligheten och giltigheten för alla analyser eller modeller som bygger på data. Ett sätt att identifiera problem med datakvalitet är att undersöka överträdelser av funktionella beroenden mellan kolumner i en datauppsättning.

Funktionen list_dependency_violations kan hjälpa till att identifiera överträdelser av funktionella beroenden mellan datauppsättningskolumner. Med tanke på en determinant kolumn och en beroende kolumn visar den här funktionen värden som bryter mot det funktionella beroendet, tillsammans med antalet deras respektive förekomster. Detta kan hjälpa dig att inspektera ungefärliga beroenden och identifiera datakvalitetsproblem.

Det här kodfragmentet visar hur du list_dependency_violations använder funktionen:

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 det här exemplet förutsätter funktionen ett funktionellt beroende mellan kolumnerna ZIP (determinant) och CITY (beroende). Om datamängden har problem med datakvaliteten – till exempel samma postnummer som tilldelats flera städer – matar funktionen ut data med problemen:

ZIP CITY antal
12345 Boston 2
12345 Seattle 1

Den här utdatan anger att två olika städer (Boston och Seattle) har samma postnummervärde (12345). Detta tyder på ett datakvalitetsproblem i datauppsättningen.

Funktionen list_dependency_violations innehåller fler alternativ som kan hantera saknade värden, visa värden som mappats till brott mot värden, begränsa antalet överträdelser som returneras och sortera resultatet efter antal eller avgörande kolumn.

Utdata list_dependency_violations kan hjälpa dig att identifiera problem med datamängdens datakvalitet. Du bör dock noggrant undersöka resultaten och överväga kontexten för dina data för att fastställa det lämpligaste tillväga för att åtgärda de identifierade problemen. Den här metoden kan innebära mer datarensning, validering eller utforskning för att säkerställa tillförlitligheten och giltigheten för din analys eller modell.

Visualisera problem med datakvalitet

Datakvalitetsproblem kan skada tillförlitligheten och giltigheten för alla analyser eller modeller som bygger på dessa data. Det är viktigt att identifiera och åtgärda dessa problem för att säkerställa att dina resultat är korrekta. För att identifiera problem med datakvaliteten kan du undersöka överträdelser av funktionella beroenden mellan kolumner i en datauppsättning. Att visualisera dessa överträdelser kan visa problemen tydligare och hjälpa dig att åtgärda dem mer effektivt.

Funktionen plot_dependency_violations kan hjälpa till att visualisera överträdelser av funktionella beroenden mellan kolumner i en datauppsättning. Med tanke på en avgörande kolumn och en beroende kolumn visar den här funktionen de värden som bryter mot värdena i ett grafiskt format för att göra det lättare att förstå datakvalitetsproblemens natur och omfattning.

Det här kodfragmentet visar hur du plot_dependency_violations använder funktionen:

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 det här exemplet förutsätter funktionen ett befintligt funktionellt beroende mellan kolumnerna ZIP (determinant) och CITY (beroende). Om datauppsättningen har problem med datakvalitet – till exempel samma postnummer som tilldelats flera städer – genererar funktionen ett diagram över de värden som bryter mot värdena.

Funktionen plot_dependency_violations innehåller fler alternativ som kan hantera saknade värden, visa värden som mappats till brott mot värden, begränsa antalet överträdelser som returneras och sortera resultatet efter antal eller avgörande kolumn.

Funktionen plot_dependency_violations genererar en visualisering som kan hjälpa dig att identifiera problem med datamängdens datakvalitet. Du bör dock noggrant undersöka resultaten och överväga kontexten för dina data för att fastställa det lämpligaste tillväga för att åtgärda de identifierade problemen. Den här metoden kan innebära mer datarensning, validering eller utforskning för att säkerställa tillförlitligheten och giltigheten för din analys eller modell.

Skärmbild som visar plot_dependency_violations funktionsutdata.

Framtvinga funktionella begränsningar

Datakvalitet är avgörande för att säkerställa tillförlitligheten och giltigheten för alla analyser eller modeller som bygger på en datauppsättning. Tillämpning av funktionella begränsningar mellan kolumner i en datauppsättning kan bidra till att förbättra datakvaliteten. Funktionsbegränsningar kan hjälpa till att säkerställa att relationerna mellan kolumnerna har noggrannhet och konsekvens, vilket kan leda till mer exakta analys- eller modellresultat.

Funktionen drop_dependency_violations kan hjälpa till att framtvinga funktionella begränsningar mellan kolumner i en datauppsättning. Den släpper rader som bryter mot en viss begränsning. Med tanke på en avgörande kolumn och en beroende kolumn tar den här funktionen bort rader med värden som inte överensstämmer med funktionsbegränsningen mellan de två kolumnerna.

Det här kodfragmentet visar hur du drop_dependency_violations använder funktionen:

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

Här framtvingar funktionen en funktionell begränsning mellan kolumnerna ZIP (determinant) och CITY (beroende). För varje värde för determinanten väljs det vanligaste värdet för beroendet och alla rader med andra värden tas bort. Med tanke på den här datamängden skulle till exempel raden med CITY=Seattle tas bort och det funktionella beroendet ZIP –> CITY finns i utdata:

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

Funktionen drop_dependency_violations ger verbose möjlighet att styra utdataverositeten. Genom att ange verbose=1kan du se antalet borttagna rader. Ett verbose=2 värde visar hela radinnehållet i de borttagna raderna.

Funktionen drop_dependency_violations kan framtvinga funktionella begränsningar mellan kolumner i datauppsättningen, vilket kan hjälpa till att förbättra datakvaliteten och leda till mer exakta resultat i din analys eller modell. Du måste dock noga överväga kontexten för dina data och de funktionsbegränsningar som du väljer att tillämpa för att säkerställa att du inte oavsiktligt tar bort värdefull information från datauppsättningen.