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 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
``` 

## 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_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 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.

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