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.
A kezdőlap bal oldalán található élménykapcsolóval válthat a Synapse Adattudomány felületre.
- 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.
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.
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=1
lá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.
Kapcsolódó tartalom
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: