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. Pochopení těchto závislostí vám může pomoct odhalit vzory a vztahy v datech, což může být užitečné pro přípravu funkcí, čištění dat a 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 prostředí Datová Věda 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í nutné ho instalovat. Pokud používáte Spark 3.3 nebo novější nebo pokud chcete aktualizovat na nejnovější verzi sémantického odkazu, můžete příkaz spustit:

python %pip install -U semantic-link  

Vyhledání funkčních závislostí v datech

Funkce find_dependencies v SemPy detekuje funkční závislosti mezi sloupci objektu FabricDataFrame. Funkce používá prahovou hodnotu pro podmíněnou entropii ke zjišťování přibližných funkčních závislostí, kde nízká podmíněná entropie označuje silnou závislost mezi sloupci. Pokud chcete, aby find_dependencies byla funkce selektivnější, můžete nastavit nižší prahovou hodnotu pro podmíněnou entropii. Nižší prahová hodnota znamená, že budou zjištěny pouze silnější závislosti.

Následující fragment kódu Pythonu ukazuje, jak se používá find_dependencies.

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. Sloupce s mapováním 1:1 budou reprezentovány jako seznam. Funkce se také snaží vyřadit potenciální závislosti odebráním tranzitivních hran.

Když zadáte dropna=True možnost, řádky, které mají hodnotu NaN v obou sloupcích, se z vyhodnocení eliminují. To může vést k netransitivním závislostem, jako v následujícím 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ávání dropna=True možnosti vytvořit cykly, jak je znázorněno v následujícím 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 pomocí funkce vizualizovat plot_dependency_metadata závislosti. 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ů.

Následující fragment kódu Pythonu ukazuje, jak se používá 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 vloží 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 nastat v různých formách, jako jsou chybějící hodnoty, nekonzistence nebo nepřesnosti. Identifikace a řešení těchto problémů je zásadní pro 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 prozkoumání porušení funkčních závislostí mezi sloupci v datové sadě.

Tato list_dependency_violations funkce vám může pomoct identifikovat porušení funkčních závislostí mezi sloupci v datové sadě. 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 být užitečné při kontrole přibližných závislostí a identifikaci problémů s kvalitou dat.

Následující kód ukazuje příklad použití list_dependency_violations funkce:

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á, že mezi sloupci ZIP (determinant) a CITY (závislý) existuje funkční závislost. 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 porušení hodnot:

ZIP CITY count
12345 Boston 2
12345 Seattle 0

Tento výstup označuje, že stejný PSČ (12345) je připojený ke dvěma různým městům (Boston a Seattle), což naznačuje problém s kvalitou dat v datové sadě.

Funkce list_dependency_violations poskytuje další možnosti pro zpracování chybějících hodnot, zobrazení hodnot mapovaných na porušení hodnot, omezení počtu vrácených porušení a řazení výsledků podle počtu nebo determinantního sloupce. (TODO: Odkaz na dokumentaci k rozhraní API)

Výstup list_dependency_violations může pomoct identifikovat problémy s kvalitou dat ve vaší datové sadě. Je však důležité pečlivě prozkoumat výsledky a zvážit kontext vašich dat a určit nejvhodnější postup pro řešení zjištěných problémů. Tento postup může zahrnovat další č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 negativně ovlivnit spolehlivost a platnost jakékoli analýzy nebo modelu založeného na datech. Identifikace a řešení těchto problémů je zásadní pro zajištění přesnosti výsledků. Jedním ze způsobů, jak detekovat problémy s kvalitou dat, je prozkoumání porušení funkčních závislostí mezi sloupci v datové sadě. Vizualizace těchto porušení vám pomůže lépe porozumět problémům a efektivněji je vyř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.

Následující kód ukazuje příklad použití plot_dependency_violations funkce:

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á, že mezi sloupci ZIP (determinant) a CITY (závislý) existuje funkční závislost. 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 porušení hodnot.

Funkce plot_dependency_violations poskytuje další možnosti pro zpracování chybějících hodnot, zobrazení hodnot mapovaných na porušení hodnot, omezení počtu vrácených porušení a řazení výsledků podle počtu nebo determinantního sloupce. (TODO: Odkaz na dokumentaci k rozhraní API)

Vizualizace vygenerovaná plot_dependency_violations pomocí vám může pomoct identifikovat problémy s kvalitou dat v datové sadě a porozumět jejich povaze a rozsahu. Prozkoumáním grafu můžete získat přehled o vztazích mezi determinantem a závislými sloupci a identifikovat potenciální chyby nebo nekonzistence ve vašich datech.

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ě. Jedním ze způsobů, jak zlepšit kvalitu dat, je vynucování funkčních omezení mezi sloupci v datové sadě. Funkční omezení můžou pomoct zajistit, aby relace mezi sloupci byly konzistentní a přesné, což může vést k přesnějším výsledkům analýzy nebo modelu.

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

Následující kód ukazuje příklad použití drop_dependency_violations funkce:

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

V tomto příkladu funkce 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 s ohledem na následující datovou sadu:

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

Řádek s CITY=Seattle by se vynechal a ve výstupu se uchovává funkce ZIP –> CITY.

Funkce drop_dependency_violations poskytuje verbose možnost řízení podrobností výstupu. Nastavením verbose=1můžete zobrazit počet vynechaných řádků a verbose=2 zobrazit celý obsah řádků vynechaných řádků.

Pomocí drop_dependency_violations funkce můžete 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. Je ale důležité pečlivě zvážit kontext dat a funkční omezení, která se rozhodnete vynutit, abyste měli jistotu, že z datové sady nechtěně neodeberete cenné informace.