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.
A kezdőlap bal alsó részén található élménykapcsolóval válthat Fabricre.
- 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_dependencies
mutatja 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.
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.
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=1
lá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.