Delen via


Functionele afhankelijkheden in uw gegevens detecteren, verkennen en valideren met behulp van een semantische koppeling

Functionele afhankelijkheden zijn relaties tussen kolommen in een tabel, waarbij de waarden in de ene kolom worden gebruikt om de waarden in een andere kolom te bepalen. Als u deze afhankelijkheden begrijpt, kunt u patronen en relaties in uw gegevens ontdekken, wat op zijn beurt kan helpen bij functie-engineering, het opschonen van gegevens en het bouwen van modellen. Functionele afhankelijkheden fungeren als een effectieve invariant waarmee u problemen met gegevenskwaliteit kunt vinden en oplossen die mogelijk moeilijk te detecteren zijn.

In dit artikel gebruikt u een semantische koppeling om:

  • Afhankelijkheden zoeken tussen kolommen van een FabricDataFrame
  • Afhankelijkheden visualiseren
  • Problemen met gegevenskwaliteit identificeren
  • Problemen met gegevenskwaliteit visualiseren
  • Functionele beperkingen afdwingen tussen kolommen in een gegevensset

Vereisten

  • Ga naar de Datawetenschap ervaring in Microsoft Fabric.
  • Maak een nieuw notitieblok om code in cellen te kopiëren/plakken.
  • Voor Spark 3.4 en hoger is Semantische koppeling beschikbaar in de standaardruntime wanneer u Fabric gebruikt en hoeft u deze niet te installeren. Als u Spark 3.3 of lager gebruikt of als u wilt bijwerken naar de meest recente versie van Semantic Link, kunt u de opdracht uitvoeren: python %pip install -U semantic-link  
  • Voeg een Lakehouse toe aan uw notitieblok.

Voor Spark 3.4 en hoger is Semantische koppeling beschikbaar in de standaardruntime wanneer u Fabric gebruikt en hoeft u deze niet te installeren. Als u Spark 3.3 of lager gebruikt of als u wilt bijwerken naar de meest recente versie van Semantic Link, voert u deze opdracht uit:

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

De find_dependencies functie retourneert een FabricDataFrame met gedetecteerde afhankelijkheden tussen kolommen. Een lijst vertegenwoordigt kolommen met een toewijzing van 1:1. De functie verwijdert ook transitieve randen om te proberen de potentiële afhankelijkheden te verwijderen.

Wanneer u de dropna=True optie opgeeft, worden rijen met een NaN-waarde in beide kolommen verwijderd uit evaluatie. Dit kan leiden tot niet-transitieve afhankelijkheden, zoals wordt weergegeven in dit voorbeeld:

A B E
1 1 1
1 1 1
1 Geen getal 9
2 Geen getal 2
2 2 2

In sommige gevallen kan de afhankelijkheidsketen cycli vormen wanneer u de dropna=True optie opgeeft, zoals wordt weergegeven in dit voorbeeld:

A B E
1 1 Geen getal
2 1 Geen getal
Geen getal 1 1
Geen getal 2 1
1 Geen getal 1
1 Geen getal 2

Afhankelijkheden in gegevens visualiseren

Nadat u functionele afhankelijkheden in een gegevensset hebt gevonden (met behulp find_dependenciesvan), kunt u de afhankelijkheden visualiseren met de plot_dependency_metadata functie. Deze functie gebruikt het resulterende FabricDataFrame find_dependencies en maakt een visuele weergave van de afhankelijkheden tussen kolommen en groepen kolommen.

Dit Python-codefragment laat zien hoe u het volgende kunt gebruiken 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)

De plot_dependency_metadata functie genereert een visualisatie waarin de 1:1 groeperingen van kolommen worden weergegeven. Kolommen die tot één groep behoren, worden in één cel geplaatst. Als er geen geschikte kandidaten worden gevonden, wordt een leeg FabricDataFrame geretourneerd.

Schermopname van de uitvoer van de functie plot_dependencies.

Problemen met gegevenskwaliteit identificeren

Problemen met gegevenskwaliteit kunnen verschillende vormen hebben, bijvoorbeeld ontbrekende waarden, inconsistenties of onnauwkeurigheden. Het identificeren en oplossen van deze problemen is belangrijk om de betrouwbaarheid en geldigheid van een analyse of model op basis van de gegevens te waarborgen. Een manier om problemen met de kwaliteit van gegevens te detecteren, is door schendingen van functionele afhankelijkheden tussen kolommen in een gegevensset te onderzoeken.

De list_dependency_violations functie kan helpen bij het identificeren van schendingen van functionele afhankelijkheden tussen gegevenssetkolommen. Op basis van een determinante kolom en een afhankelijke kolom worden met deze functie waarden weergegeven die de functionele afhankelijkheid schenden, samen met het aantal van hun respectieve exemplaren. Dit kan helpen bij het inspecteren van geschatte afhankelijkheden en het identificeren van problemen met de gegevenskwaliteit.

In dit codefragment ziet u hoe u de list_dependency_violations functie gebruikt:

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

In dit voorbeeld gaat de functie uit van een functionele afhankelijkheid tussen de kolommen ZIP (determinant) en CITY (afhankelijk). Als de gegevensset problemen heeft met de kwaliteit van gegevens, bijvoorbeeld dezelfde postcode die aan meerdere steden is toegewezen, voert de functie de gegevens uit met de problemen:

ZIP CITY aantal
12345 Boston 2
12345 Seattle 1

Deze uitvoer geeft aan dat twee verschillende steden (Boston en Seattle) dezelfde postcodewaarde hebben (12345). Dit duidt op een probleem met de gegevenskwaliteit in de gegevensset.

De list_dependency_violations functie biedt meer opties waarmee ontbrekende waarden kunnen worden verwerkt, waarden worden weergegeven die zijn toegewezen aan inbreukmakende waarden, het aantal geretourneerde schendingen beperken en de resultaten sorteren op aantal of determinant kolom.

De list_dependency_violations uitvoer kan helpen bij het identificeren van problemen met de gegevenskwaliteit van gegevenssets. U moet de resultaten echter zorgvuldig onderzoeken en rekening houden met de context van uw gegevens, om de meest geschikte manier van actie te bepalen om de geïdentificeerde problemen op te lossen. Deze benadering kan betrekking hebben op meer gegevens opschonen, valideren of verkennen om de betrouwbaarheid en geldigheid van uw analyse of model te garanderen.

Problemen met gegevenskwaliteit visualiseren

Problemen met gegevenskwaliteit kunnen de betrouwbaarheid en geldigheid van een analyse of model op basis van die gegevens beschadigen. Het identificeren en oplossen van deze problemen is belangrijk om de nauwkeurigheid van uw resultaten te garanderen. Als u problemen met de kwaliteit van gegevens wilt detecteren, kunt u schendingen van functionele afhankelijkheden tussen kolommen in een gegevensset onderzoeken. Het visualiseren van deze schendingen kan de problemen duidelijker weergeven en u helpen ze effectiever op te lossen.

De plot_dependency_violations functie kan helpen bij het visualiseren van schendingen van functionele afhankelijkheden tussen kolommen in een gegevensset. Gezien een determinante kolom en een afhankelijke kolom, toont deze functie de schendende waarden in een grafische indeling, zodat u gemakkelijker inzicht krijgt in de aard en omvang van de problemen met de gegevenskwaliteit.

In dit codefragment ziet u hoe u de plot_dependency_violations functie gebruikt:

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

In dit voorbeeld gaat de functie uit van een bestaande functionele afhankelijkheid tussen de kolommen ZIP (determinant) en CITY (afhankelijk). Als de gegevensset problemen heeft met de kwaliteit van gegevens, bijvoorbeeld dezelfde postcode die aan meerdere steden is toegewezen, genereert de functie een grafiek van de schendende waarden.

De plot_dependency_violations functie biedt meer opties waarmee ontbrekende waarden kunnen worden verwerkt, waarden worden weergegeven die zijn toegewezen aan inbreukmakende waarden, het aantal geretourneerde schendingen beperken en de resultaten sorteren op aantal of determinant kolom.

Met de plot_dependency_violations functie wordt een visualisatie gegenereerd waarmee problemen met de kwaliteit van gegevenssets kunnen worden geïdentificeerd. U moet de resultaten echter zorgvuldig onderzoeken en rekening houden met de context van uw gegevens, om de meest geschikte manier van actie te bepalen om de geïdentificeerde problemen op te lossen. Deze benadering kan betrekking hebben op meer gegevens opschonen, valideren of verkennen om de betrouwbaarheid en geldigheid van uw analyse of model te garanderen.

Schermopname van de uitvoer van de plot_dependency_violations-functie.

Functionele beperkingen afdwingen

Gegevenskwaliteit is essentieel voor het waarborgen van de betrouwbaarheid en geldigheid van elke analyse of model die is gebouwd op een gegevensset. Het afdwingen van functionele beperkingen tussen kolommen in een gegevensset kan helpen de gegevenskwaliteit te verbeteren. Functionele beperkingen kunnen ervoor zorgen dat de relaties tussen kolommen nauwkeurigheid en consistentie hebben, wat kan leiden tot nauwkeurigere analyse- of modelresultaten.

De drop_dependency_violations functie kan helpen bij het afdwingen van functionele beperkingen tussen kolommen in een gegevensset. Het verwijdert rijen die een bepaalde beperking schenden. Uitgaande van een determinante kolom en een afhankelijke kolom, verwijdert deze functie rijen met waarden die niet voldoen aan de functionele beperking tussen de twee kolommen.

In dit codefragment ziet u hoe u de drop_dependency_violations functie gebruikt:

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

Hier dwingt de functie een functionele beperking af tussen de kolommen ZIP (determinant) en CITY (afhankelijk). Voor elke waarde van de determinant wordt de meest voorkomende waarde van de afhankelijke waarde gekozen en worden alle rijen met andere waarden verwijderd. Op basis van deze gegevensset wordt de rij met CITY=Seattle bijvoorbeeld verwijderd en wordt de functionele afhankelijkheid ZIP -> CITY in de uitvoer opgeslagen:

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

De drop_dependency_violations functie biedt de verbose mogelijkheid om de uitbreiding van de uitvoer te beheren. Als u dit instelt verbose=1, ziet u het aantal verwijderde rijen. Een verbose=2 waarde toont de volledige rijinhoud van de verwijderde rijen.

De drop_dependency_violations functie kan functionele beperkingen afdwingen tussen kolommen in uw gegevensset, waardoor de gegevenskwaliteit kan worden verbeterd en de resultaten in uw analyse of model nauwkeuriger kunnen worden. U moet echter zorgvuldig rekening houden met de context van uw gegevens en de functionele beperkingen die u wilt afdwingen, om ervoor te zorgen dat u niet per ongeluk waardevolle informatie uit uw gegevensset verwijdert.