Udostępnij przez


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

  • 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

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 zwiększyć selektywność find_dependencies funkcji, można ustawić niższy próg dla entropii warunkowej. Niższy próg oznacza, że zostaną wykryte tylko silniejsze zależności.

Ten fragment kodu w języku Python pokazuje, jak używać polecenia 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 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_dependenciesplot_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.

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

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

Zrzut ekranu przedstawiający dane wyjściowe 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 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 MIASTO
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.