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 segíthet a funkciófejlesztésben, az adattisztításban és a modellkészítési feladatokban. 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 használ a következőhöz:

  • 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 alsó részén található élménykapcsolóval válthat Fabricre.

    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 Fabricben található Adattudomány felületre.
  • 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 ezt a parancsot:

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

A find_dependencies függvény egy FabricDataFrame-et ad vissza az oszlopok közötti észlelt függőségekkel. A lista 1:1 leképezéssel rendelkező oszlopokat jelöl. A függvény eltávolítja a tranzitív éleket is, hogy 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 nem tranzitív függőségeket eredményezhet, ahogyan az ebben a példában látható:

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 alkothat a beállítás megadásakor, ahogyan az ebben a dropna=True 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énnyel. 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.

Ez a Python-kódrészlet a következőt plot_dependenciesmutatja be:

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égi problémák különböző űrlapokkal rendelkezhetnek, például hiányzó értékekkel, inkonzisztenciákkal vagy pontatlanságokkal. Ezeknek a problémáknak a azonosítása és kezelése fontos az adatokra épülő elemzések vagy modellek megbízhatóságának és érvényességének biztosítása érdekében. 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 adathalmazoszlopok 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 segíthet a közelítő függőségek vizsgálatában és az adatminőségi problémák azonosításában.

Ez a kódrészlet a függvény használatát list_dependency_violations mutatja be:

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 funkcionális függőséget feltételez 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 ugyanaz az irányítószám több városhoz van hozzárendelve –, a függvény a következő problémákkal adja ki az adatokat:

FÜTYÜLÉS VÁROS darabszám
12345 Boston 2
12345 Seattle 0

Ez a kimenet azt jelzi, hogy két különböző város (Boston és Seattle) ugyanazt az irányítószámot (12345) tartalmazza. Ez 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 szám vagy determináns oszlop szerinti rendezésére.

A list_dependency_violations kimenet segíthet azonosítani az adathalmaz adatminőségével kapcsolatos problémákat. Azonban gondosan meg kell vizsgálnia az eredményeket, és figyelembe kell vennie az adatok kontextusát, hogy meghatározza az azonosított problémák megoldásához legmegfelelőbb lépéseket. Ez a megközelítés több 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 károsíthatjá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 fontos az eredmények pontosságának biztosítása érdekében. Az adatminőségi problémák észleléséhez megvizsgálhatja az adathalmaz oszlopai közötti funkcionális függőségek megsértését. Ezeknek a szabálysértéseknek a vizualizációja jobban megjelenítheti 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, hogy könnyebben megérthesse az adatminőségi problémák természetét és mértékét.

Ez a kódrészlet a függvény használatát plot_dependency_violations mutatja be:

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 egy meglévő funkcionális függőséget feltételez 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 ugyanaz az irányítószám több városhoz van hozzárendelve –, 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 szám vagy determináns oszlop szerinti rendezésére.

A plot_dependency_violations függvény létrehoz egy vizualizációt, amely segít azonosítani az adathalmaz adatminőségével kapcsolatos problémákat. Azonban gondosan meg kell vizsgálnia az eredményeket, és figyelembe kell vennie az adatok kontextusát, hogy meghatározza az azonosított problémák megoldásához legmegfelelőbb lépéseket. Ez a megközelítés több 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.

A plot_dependency_violations függvény kimenetét bemutató képernyőkép.

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 adathalmaz oszlopai közötti funkcionális korlátozások érvényesítése javíthatja az adatminőséget. A funkcionális korlátozások segíthetnek biztosítani, hogy az oszlopok közötti kapcsolatok pontossága és konzisztenciája legyen, ami pontosabb elemzéshez vagy modelleredményekhez vezethet.

A drop_dependency_violations függvény segíthet érvényesíteni az adathalmaz oszlopai közötti funkcionális korlátozásokat. Egy adott korlátozást megsértő sorokat ejt. 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 kényszernek nem megfelelő értékekkel rendelkező sorokat.

Ez a kódrészlet a függvény használatát drop_dependency_violations mutatja be:

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

Itt 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. Ebben az adatkészletben például a CITY=Seattle sort elveti a rendszer, és a ZIP –> CITY funkcionális függőség a kimenetben marad:

FÜTYÜLÉS VÁROS
12345 Seattle
12345 Boston
12345 Boston
98765 Baltimore
00000 San Francisco

A drop_dependency_violations függvény lehetővé teszi a verbose kimeneti részletesség szabályozását. A beállítással verbose=1láthatja az eldobott sorok számát. Egy verbose=2 érték az eldobott sorok teljes sortartalmát jeleníti meg.

A drop_dependency_violations függvény 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ényeket eredményezhet az elemzésben vagy a modellben. Azonban alaposan át kell gondolnia az adatok kontextusát és a kényszerítendő funkcionális korlátozásokat, hogy ne távolítson el véletlenül értékes információkat az adathalmazból.