Wykrywanie, eksplorowanie i weryfikowanie zależności funkcjonalnych w danych przy użyciu linku semantycznego
Zależności funkcjonalne to relacje między kolumnami w tabeli, gdzie wartości w jednej kolumnie są używane do określania wartości w innej kolumnie. Zrozumienie tych zależności może pomóc w odkryciu wzorców i relacji w danych, co z kolei może pomóc w inżynierii cech, czyszczeniu danych i tworzeniu modeli. Zależności funkcjonalne działają jako efektywna niezmienność, która pozwala znaleźć i rozwiązać problemy z jakością danych, które mogą być trudne do wykrycia w przeciwnym razie.
W tym artykule użyjesz linku semantycznego do:
- Znajdowanie zależności między kolumnami elementu FabricDataFrame
- Wizualizowanie zależności
- Identyfikowanie problemów z jakością danych
- Wizualizowanie problemów z jakością danych
- Wymuszanie ograniczeń funkcjonalnych między kolumnami w zestawie danych
Wymagania wstępne
Uzyskaj subskrypcję usługi Microsoft Fabric. Możesz też utworzyć konto bezpłatnej wersji próbnej usługi Microsoft Fabric.
Zaloguj się do usługi Microsoft Fabric.
Użyj przełącznika środowiska w lewej dolnej części strony głównej, aby przełączyć się na Fabric.
- Przejdź do środowiska Nauka o danych znalezionego w usłudze Microsoft Fabric.
- Utwórz nowy notes , aby skopiować/wkleić kod do komórek.
- W przypadku platformy Spark w wersji 3.4 lub nowszej link semantyczny jest dostępny w domyślnym środowisku uruchomieniowym podczas korzystania z sieci szkieletowej i nie ma potrzeby jej instalowania. Jeśli używasz platformy Spark 3.3 lub nowszej albo chcesz zaktualizować do najnowszej wersji narzędzia Semantic Link, możesz uruchomić polecenie:
python %pip install -U semantic-link
- Dodaj usługę Lakehouse do notesu.
W przypadku platformy Spark w wersji 3.4 lub nowszej link semantyczny jest dostępny w domyślnym środowisku uruchomieniowym podczas korzystania z sieci szkieletowej i nie ma potrzeby jej instalowania. Jeśli używasz platformy Spark 3.3 lub nowszej lub chcesz zaktualizować do najnowszej wersji narzędzia Semantic Link, uruchom następujące polecenie:
%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()
Funkcja find_dependencies
zwraca element FabricDataFrame z wykrytymi zależnościami między kolumnami.
Lista reprezentuje kolumny, które mają mapowanie 1:1. Funkcja usuwa również przejściowe krawędzie, aby spróbować przyciąć potencjalne zależności.
Po określeniu dropna=True
opcji wiersze, które mają wartość NaN w jednej kolumnie, zostaną wyeliminowane z oceny. Może to spowodować nietransitive zależności, jak pokazano w tym przykładzie:
A | B | C |
---|---|---|
1 | 1 | 1 |
1 | 1 | 1 |
1 | NaN | 9 |
2 | NaN | 2 |
2 | 2 | 2 |
W niektórych przypadkach łańcuch zależności może tworzyć cykle po określeniu dropna=True
opcji, jak pokazano w tym przykładzie:
A | B | C |
---|---|---|
1 | 1 | NaN |
2 | 1 | NaN |
NaN | 1 | 1 |
NaN | 2 | 1 |
1 | NaN | 1 |
1 | NaN | 2 |
Wizualizowanie zależności w danych
Po znalezieniu zależności funkcjonalnych w zestawie danych (przy użyciu polecenia ) można zwizualizować zależności za pomocą find_dependencies
plot_dependency_metadata
funkcji . Ta funkcja pobiera wynikowy element FabricDataFrame z find_dependencies
elementu i tworzy wizualną reprezentację zależności między kolumnami i grupami kolumn.
Ten fragment kodu w języku Python pokazuje, jak używać polecenia 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)
Funkcja plot_dependency_metadata
generuje wizualizację, która pokazuje grupowanie kolumn 1:1.
Kolumny należące do jednej grupy są umieszczane w jednej komórce. Jeśli nie znaleziono odpowiednich kandydatów, zostanie zwrócony pusty element FabricDataFrame.
Identyfikowanie problemów z jakością danych
Problemy z jakością danych mogą mieć różne formy — na przykład brakujące wartości, niespójności lub niedokładności. Identyfikowanie i rozwiązywanie tych problemów jest ważne, aby zapewnić niezawodność i ważność każdej analizy lub modelu utworzonego na danych. Jednym ze sposobów wykrywania problemów z jakością danych jest zbadanie naruszeń zależności funkcjonalnych między kolumnami w zestawie danych.
Funkcja list_dependency_violations
może pomóc zidentyfikować naruszenia zależności funkcjonalnych między kolumnami zestawu danych. Biorąc pod uwagę kolumnę determinant i kolumnę zależną, ta funkcja pokazuje wartości naruszające zależność funkcjonalną wraz z liczbą ich wystąpień. Może to pomóc w sprawdzeniu przybliżonych zależności i zidentyfikowaniu problemów z jakością danych.
Ten fragment kodu pokazuje, jak używać list_dependency_violations
funkcji:
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")
W tym przykładzie funkcja przyjmuje zależność funkcjonalną między kolumnami ZIP (determinant) i CITY (zależnymi). Jeśli zestaw danych ma problemy z jakością danych — na przykład ten sam kod pocztowy przypisany do wielu miast — funkcja generuje dane z problemami:
ZIP | CITY | count |
---|---|---|
12345 | Boston | 2 |
12345 | Seattle | 1 |
Te dane wyjściowe wskazują, że dwa różne miasta (Boston i Seattle) mają taką samą wartość kodu pocztowego (12345). Sugeruje to problem z jakością danych w zestawie danych.
Funkcja list_dependency_violations
udostępnia więcej opcji, które mogą obsługiwać brakujące wartości, wyświetlać wartości mapowane na naruszające wartości, ograniczyć liczbę zwróconych naruszeń i posortować wyniki według liczby lub kolumny determinant.
Dane wyjściowe mogą pomóc w zidentyfikowaniu list_dependency_violations
problemów z jakością danych zestawu danych. Należy jednak dokładnie zbadać wyniki i rozważyć kontekst danych, aby określić najbardziej odpowiedni przebieg działania w celu rozwiązania zidentyfikowanych problemów. Takie podejście może obejmować więcej czyszczenia, walidacji lub eksploracji danych w celu zapewnienia niezawodności i poprawności analizy lub modelu.
Wizualizowanie problemów z jakością danych
Problemy z jakością danych mogą uszkodzić niezawodność i ważność dowolnej analizy lub modelu utworzonego na tych danych. Identyfikowanie i rozwiązywanie tych problemów jest ważne, aby zapewnić dokładność wyników. Aby wykryć problemy z jakością danych, można sprawdzić naruszenia zależności funkcjonalnych między kolumnami w zestawie danych. Wizualizowanie tych naruszeń może wyraźniej pokazać problemy i pomóc w ich bardziej efektywnym rozwiązywaniu.
Funkcja plot_dependency_violations
może pomóc w wizualizacji naruszeń zależności funkcjonalnych między kolumnami w zestawie danych. Biorąc pod uwagę kolumnę determina i kolumnę zależną, ta funkcja pokazuje naruszające wartości w formacie graficznym, aby ułatwić zrozumienie charakteru i zakresu problemów z jakością danych.
Ten fragment kodu pokazuje, jak używać plot_dependency_violations
funkcji:
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")
W tym przykładzie funkcja przyjmuje istniejącą zależność funkcjonalną między kolumnami ZIP (determinant) i CITY (zależnymi). Jeśli zestaw danych ma problemy z jakością danych — na przykład ten sam kod POCZTOWY przypisany do wielu miast — funkcja generuje graf naruszających wartości.
Funkcja plot_dependency_violations
udostępnia więcej opcji, które mogą obsługiwać brakujące wartości, wyświetlać wartości mapowane na naruszające wartości, ograniczyć liczbę zwróconych naruszeń i posortować wyniki według liczby lub kolumny determinant.
Funkcja plot_dependency_violations
generuje wizualizację, która może pomóc zidentyfikować problemy z jakością danych zestawu danych. Należy jednak dokładnie zbadać wyniki i rozważyć kontekst danych, aby określić najbardziej odpowiedni przebieg działania w celu rozwiązania zidentyfikowanych problemów. Takie podejście może obejmować więcej czyszczenia, walidacji lub eksploracji danych w celu zapewnienia niezawodności i poprawności analizy lub modelu.
Wymuszanie ograniczeń funkcjonalnych
Jakość danych ma kluczowe znaczenie dla zapewnienia niezawodności i poprawności dowolnej analizy lub modelu utworzonego na podstawie zestawu danych. Wymuszanie ograniczeń funkcjonalnych między kolumnami w zestawie danych może pomóc poprawić jakość danych. Ograniczenia funkcjonalne mogą pomóc w zapewnieniu, że relacje między kolumnami mają dokładność i spójność, co może prowadzić do dokładniejszej analizy lub wyników modelu.
Funkcja drop_dependency_violations
może pomóc w wymuszaniu ograniczeń funkcjonalnych między kolumnami w zestawie danych. Porzuca wiersze naruszające określone ograniczenie. Biorąc pod uwagę kolumnę determina i kolumnę zależną, ta funkcja usuwa wiersze z wartościami, które nie są zgodne z ograniczeniem funkcjonalnym między dwiema kolumnami.
Ten fragment kodu pokazuje, jak używać drop_dependency_violations
funkcji:
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")
W tym miejscu funkcja wymusza ograniczenie funkcjonalne między kolumnami ZIP (determinant) i CITY (zależnymi). Dla każdej wartości determinatora jest wybierana najbardziej typowa wartość zależna, a wszystkie wiersze z innymi wartościami są porzucane. Na przykład, biorąc pod uwagę ten zestaw danych, wiersz z CITY=Seattle zostanie porzucony, a funkcjonalna zależność ZIP —> CITY przechowuje w danych wyjściowych:
ZIP | CITY |
---|---|
12345 | Seattle |
12345 | Boston |
12345 | Boston |
98765 | Baltimore |
00000 | San Francisco |
Funkcja drop_dependency_violations
udostępnia verbose
opcję kontrolowania szczegółowości danych wyjściowych. Ustawiając wartość verbose=1
, można zobaczyć liczbę porzuconych wierszy. Wartość verbose=2
przedstawia całą zawartość wierszy porzuconych.
Funkcja drop_dependency_violations
może wymuszać ograniczenia funkcjonalne między kolumnami w zestawie danych, co może pomóc poprawić jakość danych i prowadzić do bardziej dokładnych wyników analizy lub modelu. Należy jednak dokładnie rozważyć kontekst danych i ograniczenia funkcjonalne, które chcesz wymusić, aby upewnić się, że nie usuniesz przypadkowo cennych informacji z zestawu danych.