다음을 통해 공유


의미 체계 링크를 통해 데이터의 함수 종속성 감지, 탐색 및 유효성 검사

함수 종속성은 테이블의 열 간의 관계로, 한 열의 값이 다른 열의 값을 결정하는 데 사용됩니다. 이러한 종속성을 이해하면 데이터의 패턴 및 관계를 파악하는 데 도움이 될 수 있으며, 이는 기능 엔지니어링, 데이터 정리 및 모델 빌드 작업에 도움이 될 수 있습니다. 함수 종속성은 효과적인 불변 요소로 작용하여 다른 방법으로는 감지하기 어려울 수 있는 데이터 품질 문제를 찾고 해결할 수 있습니다.

이 문서에서는 의미 체계 링크를 사용하여 다음을 수행합니다.

  • FabricDataFrame 열 간의 종속성 찾기
  • 종속성 시각화
  • 데이터 품질 문제 식별
  • 데이터 품질 문제 시각화
  • 데이터 세트의 열 간에 기능 제약 조건 적용

필수 조건

  • Microsoft Fabric 구독을 구매합니다. 또는 무료 Microsoft Fabric 평가판에 등록합니다.

  • Microsoft Fabric에 로그인합니다.

  • 홈페이지 왼쪽 아래에 있는 환경 전환기를 사용하여 패브릭으로 전환합니다.

    데이터 과학을 선택할 위치를 보여 주는 환경 전환기 메뉴의 스크린샷.

  • Microsoft Fabric에 있는 데이터 과학 환경으로 이동합니다.
  • 코드를 셀에 복사하여 붙여넣을 새 Notebook을 만듭니다.
  • Spark 3.4 이상 버전의 경우 Fabric을 사용할 때 기본 런타임에서 의미 체계 링크를 사용할 수 있으므로 설치할 필요가 없습니다. Spark 3.3 이하 버전을 사용 중이거나 최신 버전의 의미 체계 링크로 업데이트하려는 경우 python %pip install -U semantic-link 명령을 실행할 수 있습니다. 
  • Notebook에 레이크하우스를 추가합니다.

Spark 3.4 이상 버전의 경우 Fabric을 사용할 때 기본 런타임에서 의미 체계 링크를 사용할 수 있으므로 설치할 필요가 없습니다. Spark 3.3 이하를 사용하거나 최신 버전의 의미 체계 링크로 업데이트하려면 다음 명령을 실행합니다.

%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()

find_dependencies 함수는 열 간의 종속성이 검색된 FabricDataFrame을 반환합니다. 목록은 1:1 매핑이 있는 열을 나타냅니다. 또한 이 함수는 잠재적인 종속성을 정리하기 위해 전이적 가장자리를 제거합니다.

dropna=True 옵션을 지정하면 두 열에 NaN 값이 있는 행이 평가에서 제거됩니다. 이 예제와 같이 비선도적 종속성이 발생할 수 있습니다.

A B C
1 1 1
1 1 1
1 NaN 9
2 NaN 2
2 2 2

경우에 따라 이 예제와 같이 옵션을 지정할 dropna=True 때 종속성 체인이 주기를 형성할 수 있습니다.

A B C
1 1 NaN
2 1 NaN
NaN 1 1
NaN 2 1
1 NaN 1
1 NaN 2

데이터의 종속성 시각화

데이터 세트(사용)에서 함수 종속성을 찾은 후 함수를 사용하여 find_dependencies종속성을 plot_dependency_metadata 시각화할 수 있습니다. 이 함수는 find_dependencies에서 결과 FabricDataFrame을 가져와 열과 열 그룹 간의 종속성을 시각적으로 표현합니다.

이 Python 코드 조각은 다음을 사용하는 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)

plot_dependency_metadata 함수는 열의 1:1 그룹화를 보여 주는 시각화를 생성합니다. 단일 그룹에 속하는 열은 단일 셀에 배치됩니다. 적합한 후보가 없으면 빈 FabricDataFrame이 반환됩니다.

plot_dependencies 함수의 출력을 보여 주는 스크린샷.

데이터 품질 문제 식별

데이터 품질 문제에는 누락된 값, 불일치 또는 부정확성 등 다양한 형식이 있을 수 있습니다. 이러한 문제를 식별하고 해결하는 것은 데이터를 기반으로 하는 분석 또는 모델의 안정성과 유효성을 보장하는 데 중요합니다. 데이터 품질 문제를 검색하는 한 가지 방법은 데이터 세트의 열 간 기능 종속성 위반을 검사하는 것입니다.

이 함수는 list_dependency_violations 데이터 세트 열 간의 기능 종속성 위반을 식별하는 데 도움이 될 수 있습니다. 결정자 열과 종속 열이 주어진 경우 이 함수는 함수 종속성을 위반하는 값과 각 발생 횟수를 표시합니다. 이를 통해 대략적인 종속성을 검사하고 데이터 품질 문제를 식별할 수 있습니다.

이 코드 조각은 함수를 사용하는 방법을 보여줍니다.list_dependency_violations

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

이 예제에서 함수는 ZIP(결정)과 CITY(종속) 열 간의 기능 종속성을 가정합니다. 데이터 세트에 데이터 품질 문제가 있는 경우(예: 여러 도시에 할당된 동일한 우편 번호) 함수는 다음과 같은 문제가 있는 데이터를 출력합니다.

ZIP CITY count
12345 Boston 2
12345 Seattle 1

이 출력은 서로 다른 두 도시(보스턴 및 시애틀)의 우편 번호 값(12345)이 동일하다는 것을 나타냅니다. 이는 데이터 세트 내의 데이터 품질 문제를 시사합니다.

이 함수는 list_dependency_violations 누락된 값을 처리하고, 위반 값에 매핑된 값을 표시하고, 반환된 위반 횟수를 제한하고, 개수 또는 결정 열별로 결과를 정렬할 수 있는 더 많은 옵션을 제공합니다.

출력은 list_dependency_violations 데이터 세트 데이터 품질 문제를 식별하는 데 도움이 될 수 있습니다. 그러나 결과를 신중하게 검토하고 데이터의 컨텍스트를 고려하여 식별된 문제를 해결하기 위한 가장 적절한 작업 과정을 결정해야 합니다. 이 방법에는 분석 또는 모델의 안정성과 유효성을 보장하기 위해 더 많은 데이터 정리, 유효성 검사 또는 탐색이 포함될 수 있습니다.

데이터 품질 문제 시각화

데이터 품질 문제는 해당 데이터를 기반으로 하는 분석 또는 모델의 안정성과 유효성을 손상시킬 수 있습니다. 이러한 문제를 식별하고 해결하는 것은 결과의 정확성을 보장하는 데 중요합니다. 데이터 품질 문제를 검색하려면 데이터 세트의 열 간 기능 종속성 위반을 검사할 수 있습니다. 이러한 위반을 시각화하면 문제를 보다 명확하게 표시하고 문제를 보다 효과적으로 해결하는 데 도움이 될 수 있습니다.

plot_dependency_violations 함수는 데이터 세트의 열 간의 함수 종속성 위반을 시각화하는 데 도움이 될 수 있습니다. 결정 열과 종속 열이 지정된 경우 이 함수는 위반 값을 그래픽 형식으로 표시하여 데이터 품질 문제의 특성과 범위를 더 쉽게 이해할 수 있도록 합니다.

이 코드 조각은 함수를 사용하는 방법을 보여줍니다.plot_dependency_violations

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

이 예제에서 함수는 ZIP(결정)과 CITY(종속) 열 간의 기존 기능 종속성을 가정합니다. 데이터 세트에 여러 도시에 할당된 동일한 우편 번호와 같은 데이터 품질 문제가 있는 경우 함수는 위반 값의 그래프를 생성합니다.

이 함수는 plot_dependency_violations 누락된 값을 처리하고, 위반 값에 매핑된 값을 표시하고, 반환된 위반 횟수를 제한하고, 개수 또는 결정 열별로 결과를 정렬할 수 있는 더 많은 옵션을 제공합니다.

이 함수는 plot_dependency_violations 데이터 세트 데이터 품질 문제를 식별하는 데 도움이 되는 시각화를 생성합니다. 그러나 결과를 신중하게 검토하고 데이터의 컨텍스트를 고려하여 식별된 문제를 해결하기 위한 가장 적절한 작업 과정을 결정해야 합니다. 이 방법에는 분석 또는 모델의 안정성과 유효성을 보장하기 위해 더 많은 데이터 정리, 유효성 검사 또는 탐색이 포함될 수 있습니다.

plot_dependency_violations 함수 출력을 보여 주는 스크린샷

함수 제약 조건 적용

데이터 품질은 데이터 세트를 기반으로 하는 모든 분석 또는 모델의 안정성과 유효성을 보장하는 데 매우 중요합니다. 데이터 세트의 열 간에 기능 제약 조건을 적용하면 데이터 품질을 개선하는 데 도움이 될 수 있습니다. 기능 제약 조건은 열 간의 관계에 정확도와 일관성이 있는지 확인하는 데 도움이 되며, 이로 인해 보다 정확한 분석 또는 모델 결과가 발생할 수 있습니다.

이 함수는 drop_dependency_violations 데이터 세트의 열 간에 함수 제약 조건을 적용하는 데 도움이 될 수 있습니다. 지정된 제약 조건을 위반하는 행을 삭제합니다. 결정 열과 종속 열이 있는 경우 이 함수는 두 열 간의 기능 제약 조건을 준수하지 않는 값이 있는 행을 제거합니다.

이 코드 조각은 함수를 사용하는 방법을 보여줍니다.drop_dependency_violations

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

여기서 함수는 ZIP(결정)과 CITY(종속) 열 간에 함수 제약 조건을 적용합니다. 결정자의 각 값에 대해 종속 항목의 가장 일반적인 값이 선택되고 다른 값이 있는 모든 행을 삭제됩니다. 예를 들어 이 데이터 세트를 사용하면 CITY=Seattle이 있는 행이 삭제되고 기능 종속성 ZIP -> CITY가 출력에 포함됩니다.

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

이 함수는 drop_dependency_violations 출력 세부 정보를 제어하는 옵션을 제공합니다 verbose . 설정 verbose=1하면 삭제된 행 수를 볼 수 있습니다. 값은 verbose=2 삭제된 행의 전체 행 내용을 보여 줍니다.

이 함수는 drop_dependency_violations 데이터 세트의 열 간에 기능 제약 조건을 적용하여 데이터 품질을 개선하고 분석 또는 모델에서 보다 정확한 결과를 생성할 수 있습니다. 그러나 데이터 세트에서 중요한 정보를 실수로 제거하지 않도록 데이터 컨텍스트 및 적용하기로 선택한 기능 제약 조건을 신중하게 고려해야 합니다.