Udostępnij za pośrednictwem


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 określają wartości w innej kolumnie. Zrozumienie tych zależności może pomóc w odkryciu wzorców i relacji w danych. To zrozumienie może pomóc w zakresie inżynierii cech, czyszczenia danych i zadań tworzenia modelu. Zależności funkcjonalne działają jako efektywna niezmienność, która pomaga znaleźć i rozwiązać problemy z jakością danych, które mogą być trudne do wykrycia w inny sposób.

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

  • Przejdź do środowiska nauki o danych znalezionego w Microsoft Fabric.
  • Utwórz nowy notatnik, aby kopiować i wklejać 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 Fabric i nie ma potrzeby go instalować. 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 Lakehouse do notebooka.

Link semantyczny jest dostępny w domyślnym uruchomieniowym środowisku Fabric. Aby zaktualizować link semantyczny do najnowszej wersji, uruchom następujące polecenie:

%pip install -U semantic-link

Znajdowanie zależności funkcjonalnych w danych

Funkcja SemPy find_dependencies wykrywa zależności funkcjonalne między kolumnami elementu FabricDataFrame. Funkcja używa progu na entropii warunkowej do odnajdywania przybliżonych zależności funkcjonalnych, gdzie niska entropia warunkowa wskazuje silną zależność między kolumnami. Aby funkcja find_dependencies była bardziej selektywna, ustaw niższy próg entropii warunkowej. Niższy próg oznacza, że wykrywane są tylko silniejsze zależności.

Ten fragment kodu Python pokazuje, jak używać 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()

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 funkcja eliminuje wiersze, które mają wartość NaN w jednej kolumnie z oceny. To usunięcie może spowodować nietranzatywne zależności, jak pokazano w poniższym 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 poniższym 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 programu find_dependenciesmożna wizualizować zależności przy użyciu plot_dependency_metadata funkcji . Ta funkcja pobiera wynikowy obiekt FabricDataFrame z find_dependencies i tworzy wizualną reprezentację zależności między kolumnami a grupami kolumn.

Ten fragment kodu Python pokazuje, jak używać plot_dependencies:

from sempy.fabric import FabricDataFrame
from sempy.dependencies import plot_dependency_metadata
from sempy.samples import download_synthea
import pandas as pd

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 funkcja nie znajdzie żadnych odpowiednich kandydatów, zwraca pusty element FabricDataFrame. Zrzut ekranu przedstawiający dane wyjściowe funkcji plot_dependencies.

Zrzut ekranu przedstawiający dane wyjściowe funkcji plot_dependencies.

Identyfikowanie problemów z jakością danych

Problemy z jakością danych mogą mieć wiele form — na przykład brakujące wartości, niespójności lub niedokładności. Aby zapewnić niezawodność i ważność każdej analizy lub modelu utworzonego na podstawie danych, ważne jest zidentyfikowanie i rozwiązanie tych problemów. 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 w znalezieniu naruszeń zależności funkcjonalnych między kolumnami zestawu danych. Po podaniu kolumny determinant i kolumny zależnej funkcja wyświetla wartości naruszające zależność funkcjonalną wraz z liczbą ich wystąpień. Te informacje mogą pomóc w sprawdzeniu przybliżonych zależności i zidentyfikowaniu problemów z jakością danych.

Poniższy fragment kodu pokazuje, jak używać list_dependency_violations funkcji:

from sempy.fabric import FabricDataFrame
from sempy.samples import download_synthea
import pandas as pd

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 MIASTO liczyć
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). Ten wynik sugeruje 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ń oraz posortować wyniki według liczby lub kolumny determinanty.

Wynik list_dependency_violations może pomóc w zidentyfikowaniu problemów z jakością 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, sprawdź 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ę determinant 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.samples import download_synthea
import pandas as pd

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 zmapowane do wartości naruszających, ograniczyć liczbę zwróconych naruszeń oraz posortować wyniki według liczby lub kolumny determinującej.

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.

Zrzut ekranu przedstawiający wynik funkcji plot_dependency_violations.

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 zapewniają, ż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 wymusza ograniczenia funkcjonalne między kolumnami w zestawie danych. Usuwa 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
import pandas as pd

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 przykładzie funkcja wymusza ograniczenie funkcjonalne między kolumnami ZIP (determinant) i CITY (zależne). Dla każdej wartości determinatora funkcja wybiera najbardziej typową wartość kolumny zależnej i usuwa wszystkie wiersze z innymi wartościami. Na przykład, biorąc pod uwagę ten zestaw danych, wiersz z CITY=Seattle jest usunięty, a zależność funkcyjna ZIP -> CITY jest zachowana w danych wyjściowych.

ZIP MIASTO
12345 Seattle
12345 Boston
12345 Boston
98765 Baltimore
00000 San Francisco

Funkcja drop_dependency_violations umożliwia kontrolowanie szczegółowości danych wyjściowych za pomocą opcji verbose. 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 uważnie rozważyć kontekst danych i ograniczenia funkcjonalne, które chcesz wymusić, aby upewnić się, że nie usuniesz przypadkowo cennych informacji z zestawu danych.