Megosztás a következőn keresztül:


Funkcionális függőségek észlelése, felderítése és ellenőrzése az adatokban szemantikai hivatkozás használatával

A funkcionális függőségek olyan kapcsolatok egy tábla oszlopai között, ahol az egyik oszlop értékei egy másik oszlop értékeinek meghatározására szolgálnak. Ezeknek a függőségeknek a megértése segíthet feltárni az adatok mintáit és kapcsolatait, ami hasznos lehet a funkciófejlesztéshez, az adattisztításhoz és a modellépítéshez. A funkcionális függőségek hatékony invariánsként működnek, amely lehetővé teszi olyan adatminőségi problémák keresését és kijavítását, amelyek egyébként nehezen észlelhetők.

Ebben a cikkben szemantikai hivatkozást fog használni a következőre:

  • A FabricDataFrame oszlopai közötti függőségek keresése
  • Függőségek vizualizálása
  • Adatminőségi problémák azonosítása
  • Adatminőségi problémák vizualizációja
  • Funkcionális korlátozások kikényszerítése egy adathalmaz oszlopai között

Előfeltételek

  • Microsoft Fabric-előfizetés lekérése. Vagy regisztráljon egy ingyenes Microsoft Fabric-próbaverzióra.

  • Jelentkezzen be a Microsoft Fabricbe.

  • A kezdőlap bal oldalán található élménykapcsolóval válthat a Synapse Adattudomány felületre.

    Képernyőkép a felületváltó menüjéről, amelyen látható, hogy hol válassza ki a Adattudomány.

  • Lépjen a Microsoft Fabric Adattudomány felületére.
  • Hozzon létre egy új jegyzetfüzetet a kód cellákba másolásához/beillesztéséhez.
  • A Spark 3.4-hez és újabb verziókhoz a Szemantikus hivatkozás az alapértelmezett futtatókörnyezetben érhető el a Fabric használatakor, és nincs szükség a telepítésre. Ha a Spark 3.3-at vagy az alábbi verziót használja, vagy a Szemantic Link legújabb verziójára szeretne frissíteni, futtassa a parancsot: python %pip install -U semantic-link  
  • Vegyen fel egy Lakehouse-t a jegyzetfüzetbe. A Spark 3.4-hez és újabb verziókhoz a Szemantikus hivatkozás az alapértelmezett futtatókörnyezetben érhető el a Fabric használatakor, és nincs szükség a telepítésre. Ha a Spark 3.3-at vagy az alábbi verziót használja, vagy a Szemantic Link legújabb verziójára szeretne frissíteni, futtassa a parancsot:

python %pip install -U semantic-link  

Funkcionális függőségek keresése az adatokban

A find_dependencies SemPy függvény a FabricDataFrame oszlopai közötti funkcionális függőségeket észleli. A függvény a feltételes entrópia küszöbértékével észleli a hozzávetőleges funkcionális függőségeket, ahol az alacsony feltételes entrópia erős függőséget jelez az oszlopok között. A függvény szelektívebbé tétele find_dependencies érdekében alacsonyabb küszöbértéket állíthat be a feltételes entrópiára. Az alacsonyabb küszöbérték azt jelenti, hogy a rendszer csak erősebb függőségeket észlel.

Az alábbi Python-kódrészlet bemutatja a használat módját 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()

A find_dependencies függvény egy FabricDataFrame-et ad vissza az oszlopok közötti észlelt függőségekkel. Az 1:1 leképezéssel rendelkező oszlopok listaként jelennek meg. A függvény a tranzitív élek eltávolításával is megpróbálja megszüntetni a lehetséges függőségeket.

A beállítás megadásakor az dropna=True egyik oszlopban NaN-értékkel rendelkező sorok ki lesznek választva a kiértékelésből. Ez azt eredményezheti, hogy a függőségek nem tranzitívak, mint az alábbi példában:

A h C
0 0 0
0 0 0
0 NaN 9
2 NaN 2
2 2 2

Bizonyos esetekben a függőségi lánc ciklusokat alakíthat ki a dropna=True beállítás megadásakor, ahogyan az alábbi példában látható:

A h C
0 0 NaN
2 0 NaN
NaN 0 0
NaN 2 0
0 NaN 0
0 NaN 2

Függőségek vizualizációja az adatokban

Miután funkcionális függőségeket talált egy adatkészletben (a használatával find_dependencies), megjelenítheti a függőségeket a plot_dependency_metadata függvény használatával. Ez a függvény az eredményként kapott FabricDataFrame-et használja, find_dependencies és vizuálisan ábrázolja az oszlopok és oszlopcsoportok közötti függőségeket.

Az alábbi Python-kódrészlet bemutatja a használat módját 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)

A plot_dependency_metadata függvény létrehoz egy vizualizációt, amely az oszlopok 1:1 csoportosítását jeleníti meg. Az egyetlen csoporthoz tartozó oszlopok egyetlen cellába kerülnek. Ha nem talál megfelelő jelölteket, a rendszer üres FabricDataFrame-et ad vissza.

Képernyőkép a plot_dependencies függvény kimenetéről.

Adatminőségi problémák azonosítása

Az adatminőséggel kapcsolatos problémák különböző formában jelentkezhetnek, például hiányzó értékek, inkonzisztenciák vagy pontatlanságok. Ezeknek a problémáknak a azonosítása és kezelése elengedhetetlen az adatokra épülő elemzések vagy modellek megbízhatóságának és érvényességének biztosításához. Az adatminőségi problémák észlelésének egyik módja az adathalmaz oszlopai közötti funkcionális függőségek megsértésének vizsgálata.

A list_dependency_violations függvény segíthet azonosítani az adathalmaz oszlopai közötti funkcionális függőségek megsértését. Egy determináns oszlop és egy függő oszlop alapján ez a függvény olyan értékeket jelenít meg, amelyek megsértik a funkcionális függőséget, valamint a hozzájuk tartozó előfordulások számát. Ez hasznos lehet a közelítő függőségek vizsgálatához és az adatminőségi problémák azonosításához.

Az alábbi kód egy példát mutat be a list_dependency_violations függvény használatára:

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

Ebben a példában a függvény feltételezi, hogy létezik funkcionális függőség a ZIP (determináns) és a CITY (függő) oszlopok között. Ha az adathalmaz adatminőségi problémái vannak, például ugyanazt az irányítószámot rendelik több városhoz, a függvény a szabálysértő értékeket adja ki:

ZIP VÁROS darabszám
12345 Boston 2
12345 Seattle 0

Ez a kimenet azt jelzi, hogy ugyanaz az irányítószám (12345) két különböző városhoz (Boston és Seattle) van csatolva, ami adatminőségi problémát jelez az adathalmazon belül.

A list_dependency_violations függvény további lehetőségeket biztosít a hiányzó értékek kezelésére, az értékek megsértésére leképezett értékek megjelenítésére, a visszaadott szabálysértések számának korlátozására, valamint az eredmények darabszám vagy determináns oszlop szerinti rendezésére. (TODO: Hivatkozás API-dokumentumra)

A kimenet list_dependency_violations segíthet azonosítani az adathalmaz adatminőségi problémáit. Fontos azonban, hogy gondosan megvizsgálja az eredményeket, és figyelembe vegye az adatok kontextusát, hogy meghatározza az azonosított problémák megoldásához legmegfelelőbb lépéseket. Ez a művelet további adattisztítást, érvényesítést vagy feltárást is magában foglalhat az elemzés vagy modell megbízhatóságának és érvényességének biztosítása érdekében.

Adatminőségi problémák vizualizációja

Az adatminőségi problémák negatívan befolyásolhatják az adatokra épülő elemzések vagy modellek megbízhatóságát és érvényességét. Ezeknek a problémáknak a azonosítása és kezelése elengedhetetlen az eredmények pontosságának biztosításához. Az adatminőségi problémák észlelésének egyik módja az adathalmaz oszlopai közötti funkcionális függőségek megsértésének vizsgálata. Ezeknek a szabálysértéseknek a vizualizációja jobban megértheti a problémákat, és hatékonyabban kezelheti őket.

A plot_dependency_violations függvény segíthet megjeleníteni az adathalmaz oszlopai közötti funkcionális függőségek megsértését. A determináns oszlop és a függő oszlop alapján ez a függvény grafikus formátumban jeleníti meg a szabálysértő értékeket, így könnyebben megértheti az adatminőségi problémák természetét és mértékét.

Az alábbi kód egy példát mutat be a plot_dependency_violations függvény használatára:

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

Ebben a példában a függvény feltételezi, hogy a ZIP (determináns) és a CITY (függő) oszlopok között funkcionális függőség áll fenn. Ha az adathalmaz adatminőségi problémái vannak, például ugyanazt az irányítószámot rendelik több városhoz, a függvény létrehoz egy grafikont a megsértő értékekről.

A plot_dependency_violations függvény további lehetőségeket biztosít a hiányzó értékek kezelésére, az értékek megsértésére leképezett értékek megjelenítésére, a visszaadott szabálysértések számának korlátozására, valamint az eredmények darabszám vagy determináns oszlop szerinti rendezésére. (TODO: Hivatkozás API-dokumentumra)

Az általa plot_dependency_violations létrehozott vizualizáció segíthet azonosítani az adathalmaz adatminőségi problémáit, és megérteni azok természetét és mértékét. A gráf vizsgálatával betekintést nyerhet a determináns és a függő oszlopok közötti kapcsolatokba, és azonosíthatja a lehetséges hibákat vagy inkonzisztenciákat az adatokban.

Képernyőkép a plot_dependency_violations függvény kimenetéről.

Funkcionális korlátozások kényszerítése

Az adatminőség elengedhetetlen az adathalmazra épülő elemzések vagy modellek megbízhatóságának és érvényességének biztosításához. Az adatminőség javításának egyik módja az adathalmaz oszlopai közötti funkcionális korlátozások kikényszerítése. A funkcionális korlátozások segítségével biztosítható, hogy az oszlopok közötti kapcsolatok konzisztensek és pontosak legyenek, ami pontosabb eredményeket eredményezhet az elemzésben vagy a modellben.

A drop_dependency_violations függvény segíthet érvényesíteni az adathalmaz oszlopai közötti funkcionális korlátozásokat az adott kényszert sértő sorok elvetésével. A determináns oszlop és a függő oszlop miatt ez a függvény eltávolítja a két oszlop közötti funkcionális korlátozásnak nem eleget tevő értékekkel rendelkező sorokat.

Az alábbi kód egy példát mutat be a drop_dependency_violations függvény használatára:

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

Ebben a példában a függvény funkcionális kényszert kényszerít ki a ZIP (determináns) és a CITY (függő) oszlopok között. A determináns minden egyes értéke esetében a függő leggyakoribb értéke lesz kiválasztva, és a többi értékkel rendelkező összes sor el lesz ejtve. Például a következő adatkészletet tekintve:

ZIP VÁROS
12345 Seattle
12345 Boston
12345 Boston
98765 Baltimore
00000 San Francisco

A CITY=Seattle sor el lesz ejtve, és a ZIP –> CITY funkcionális függőség a kimenetben marad.

A drop_dependency_violations függvény lehetővé teszi a verbose kimenet részletességének szabályozását. A beállítással verbose=1láthatja az eldobott sorok számát, és verbose=2 megtekintheti az eldobott sorok teljes sortartalmát.

A függvény használatával drop_dependency_violations funkcionális korlátozásokat kényszeríthet ki az adathalmaz oszlopai között, ami javíthatja az adatminőséget, és pontosabb eredményekhez vezethet az elemzésben vagy a modellben. Fontos azonban alaposan figyelembe venni az adatok kontextusát és a kényszerítendő funkcionális korlátozásokat annak érdekében, hogy ne távolítson el véletlenül értékes információkat az adathalmazból.