Sdílet prostřednictvím


Detekce, zkoumání a ověřování funkčních závislostí v datech pomocí sémantického odkazu

Funkční závislosti jsou relace mezi sloupci v tabulce, kde se hodnoty v jednom sloupci používají k určení hodnot v jiném sloupci. Porozumění těmto závislostem vám může pomoct odhalit vzory a vztahy v datech, které vám pak můžou pomoct s technikou funkcí, čištěním dat a úlohami vytváření modelů. Funkční závislosti fungují jako efektivní invariantní závislosti, které umožňují najít a opravit problémy s kvalitou dat, které by jinak mohly být obtížné rozpoznat.

V tomto článku použijete sémantický odkaz na:

  • Vyhledání závislostí mezi sloupci prvku FabricDataFrame
  • Vizualizace závislostí
  • Identifikace problémů s kvalitou dat
  • Problémy s vizualizací kvality dat
  • Vynucení funkčních omezení mezi sloupci v datové sadě

Požadavky

  • Přejděte do Datová Věda prostředí, které najdete v Microsoft Fabric.
  • Vytvořte nový poznámkový blok pro zkopírování nebo vložení kódu do buněk.
  • Pro Spark 3.4 a vyšší je sémantický odkaz dostupný ve výchozím modulu runtime při použití prostředků infrastruktury a není potřeba ho nainstalovat. Pokud používáte Spark 3.3 nebo novější nebo pokud chcete aktualizovat na nejnovější verzi sémantického odkazu, můžete tento příkaz spustit: python %pip install -U semantic-link  
  • Přidejte do poznámkového bloku Lakehouse.

Pro Spark 3.4 a vyšší je sémantický odkaz dostupný ve výchozím modulu runtime při použití prostředků infrastruktury a není potřeba ho nainstalovat. Pokud používáte Spark 3.3 nebo novější nebo pokud chcete aktualizovat na nejnovější verzi sémantického odkazu, spusťte tento příkaz:

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

Funkce find_dependencies vrátí fabricDataFrame se zjištěnými závislostmi mezi sloupci. Seznam představuje sloupce, které mají mapování 1:1. Funkce také odebere tranzitivní hrany, aby se pokusila vyřadit potenciální závislosti.

Když zadáte dropna=True možnost, řádky, které mají hodnotu NaN v obou sloupcích, se z vyhodnocení eliminují. Výsledkem můžou být nepřenosné závislosti, jak je znázorněno v tomto příkladu:

A B C
1 1 1
1 1 1
1 Není číslo 9
2 Není číslo 2
2 2 2

V některých případech může řetěz závislostí při zadání dropna=True možnosti vytvořit cykly, jak je znázorněno v tomto příkladu:

A B C
1 1 Není číslo
2 0 Není číslo
Není číslo 1 1
Není číslo 2 0
1 Není číslo 1
1 Není číslo 2

Vizualizace závislostí v datech

Po nalezení funkčních závislostí v datové sadě (pomocí find_dependencies) můžete vizualizovat plot_dependency_metadata závislosti s funkcí. Tato funkce přebírá výsledný objekt FabricDataFrame find_dependencies a vytvoří vizuální znázornění závislostí mezi sloupci a skupinami sloupců.

Tento fragment kódu Pythonu ukazuje, jak používat 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)

Funkce plot_dependency_metadata vygeneruje vizualizaci, která zobrazuje seskupení sloupců 1:1. Sloupce, které patří do jedné skupiny, se umístí do jedné buňky. Pokud nejsou nalezeni žádní vhodný kandidáti, vrátí se prázdný objekt FabricDataFrame.

Snímek obrazovky znázorňující výstup funkce plot_dependencies

Identifikace problémů s kvalitou dat

Problémy s kvalitou dat můžou mít různé formy – například chybějící hodnoty, nekonzistence nebo nepřesnosti. Identifikace a řešení těchto problémů je důležité k zajištění spolehlivosti a platnosti jakékoli analýzy nebo modelu založeného na datech. Jedním ze způsobů, jak detekovat problémy s kvalitou dat, je prozkoumat porušení funkčních závislostí mezi sloupci v datové sadě.

Tato list_dependency_violations funkce může pomoct identifikovat porušení funkčních závislostí mezi sloupci datové sady. Vzhledem k determinantnímu sloupci a závislému sloupci zobrazuje tato funkce hodnoty, které porušují funkční závislost, spolu s počtem příslušných výskytů. To může pomoct při kontrole přibližných závislostí a identifikaci problémů s kvalitou dat.

Tento fragment kódu ukazuje, jak používat list_dependency_violations funkci:

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

V tomto příkladu funkce předpokládá funkční závislost mezi sloupci ZIP (determinant) a CITY (závislé). Pokud datová sada obsahuje problémy s kvalitou dat – například stejné PSČ přiřazené k více městům – funkce vypíše data s problémy:

ZIP CITY count
12345 Boston 2
12345 Seattle 0

Tento výstup označuje, že dvě různá města (Boston a Seattle) mají stejnou hodnotu PSČ (12345). To naznačuje problém s kvalitou dat v datové sadě.

Funkce list_dependency_violations poskytuje další možnosti, které můžou zpracovat chybějící hodnoty, zobrazit hodnoty mapované na porušení hodnot, omezit počet vrácených porušení a řadit výsledky podle počtu nebo determinantního sloupce.

Výstup list_dependency_violations může pomoct identifikovat problémy s kvalitou dat datové sady. Měli byste však pečlivě prozkoumat výsledky a zvážit kontext vašich dat, abyste zjistili nejvhodnější postup pro řešení zjištěných problémů. Tento přístup může zahrnovat více čištění, ověřování nebo zkoumání dat, aby se zajistila spolehlivost a platnost analýzy nebo modelu.

Problémy s vizualizací kvality dat

Problémy s kvalitou dat můžou poškodit spolehlivost a platnost jakékoli analýzy nebo modelu založeného na těchto datech. Identifikace a řešení těchto problémů je důležité k zajištění přesnosti výsledků. Pokud chcete zjistit problémy s kvalitou dat, můžete prozkoumat porušení funkčních závislostí mezi sloupci v datové sadě. Vizualizace těchto porušení může jasněji ukázat problémy a pomůže vám je efektivněji řešit.

Tato plot_dependency_violations funkce může pomoct vizualizovat porušení funkčních závislostí mezi sloupci v datové sadě. Vzhledem k determinantní sloupci a závislému sloupci tato funkce zobrazuje porušení hodnot v grafickém formátu, což usnadňuje pochopení povahy a rozsahu problémů s kvalitou dat.

Tento fragment kódu ukazuje, jak používat plot_dependency_violations funkci:

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

V tomto příkladu funkce předpokládá existující funkční závislost mezi sloupci ZIP (determinant) a CITY (závislé). Pokud datová sada obsahuje problémy s kvalitou dat , například stejný PSČ přiřazený k více městům, funkce vygeneruje graf chybných hodnot.

Funkce plot_dependency_violations poskytuje další možnosti, které můžou zpracovat chybějící hodnoty, zobrazit hodnoty mapované na porušení hodnot, omezit počet vrácených porušení a řadit výsledky podle počtu nebo determinantního sloupce.

Funkce plot_dependency_violations vygeneruje vizualizaci, která může pomoct identifikovat problémy s kvalitou dat datové sady. Měli byste však pečlivě prozkoumat výsledky a zvážit kontext vašich dat, abyste zjistili nejvhodnější postup pro řešení zjištěných problémů. Tento přístup může zahrnovat více čištění, ověřování nebo zkoumání dat, aby se zajistila spolehlivost a platnost analýzy nebo modelu.

Snímek obrazovky znázorňující výstup funkce plot_dependency_violations

Vynucení funkčních omezení

Kvalita dat je zásadní pro zajištění spolehlivosti a platnosti jakékoli analýzy nebo modelu založeného na datové sadě. Vynucení funkčních omezení mezi sloupci v datové sadě může pomoct zlepšit kvalitu dat. Funkční omezení můžou pomoct zajistit, aby relace mezi sloupci měly přesnost a konzistenci, což může vést k přesnější analýze nebo výsledkům modelu.

Funkce drop_dependency_violations může pomoct vynutit funkční omezení mezi sloupci v datové sadě. Jedná se o řádky, které porušují dané omezení. Vzhledem k determinantnímu sloupci a závislému sloupci tato funkce odebere řádky s hodnotami, které neodpovídají funkčnímu omezení mezi těmito dvěma sloupci.

Tento fragment kódu ukazuje, jak používat drop_dependency_violations funkci:

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

Funkce zde vynucuje funkční omezení mezi sloupci ZIP (determinant) a CITY (závislé). Pro každou hodnotu determinantu se vybere nejběžnější hodnota závislého objektu a všechny řádky s jinými hodnotami se zahodí. Například vzhledem k této datové sadě se řádek s CITY=Seattle zahodí a funkce závislosti ZIP –> CITY se uchovává ve výstupu:

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

Funkce drop_dependency_violations poskytuje verbose možnost řídit výstupní úroveň podrobností. Nastavením verbose=1můžete zobrazit počet vynechaných řádků. Hodnota verbose=2 zobrazuje celý obsah řádků vynechaných řádků.

Funkce drop_dependency_violations může vynutit funkční omezení mezi sloupci v datové sadě, což může pomoct zlepšit kvalitu dat a vést k přesnějším výsledkům analýzy nebo modelu. Musíte však pečlivě zvážit kontext dat a funkční omezení, která se rozhodnete vynutit, abyste zajistili, že z datové sady omylem neodeberete cenné informace.