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
Skaffa en Microsoft Fabric-prenumeration. Eller registrera dig för en kostnadsfri utvärderingsversion av Microsoft Fabric.
Logga in på Microsoft Fabric.
Använd upplevelseväxlaren till vänster på startsidan för att växla till Synapse Datavetenskap upplevelse.
- 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.
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.
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=1
kan 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.