다음을 통해 공유


의미 체계 링크를 사용하여 데이터에서 기능 종속성 검색, 탐색 및 유효성 검사

기능 종속성은 한 열의 값이 다른 열의 값을 결정하는 데 사용되는 테이블의 열 간의 관계입니다. 이러한 종속성을 이해하면 데이터에서 패턴 및 관계를 파악하는 데 도움이 될 수 있으며, 이는 기능 엔지니어링, 데이터 클린 및 모델 빌드에 유용할 수 있습니다. 기능 종속성은 다른 방법으로는 검색하기 어려울 수 있는 데이터 품질 문제를 찾아서 해결할 수 있는 효과적인 고정으로 작동합니다.

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

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

필수 조건

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

python %pip install -U semantic-link  

데이터에서 기능 종속성 찾기

SemPy의 함수는 find_dependencies FabricDataFrame 열 간의 기능 종속성을 검색합니다. 이 함수는 조건부 엔트로피의 임계값을 사용하여 대략적인 기능 종속성을 검색합니다. 여기서 낮은 조건부 엔트로피는 열 간의 강력한 종속성을 나타냅니다. 함수를 find_dependencies 보다 선택적으로 만들기 위해 조건부 엔트로피에 대해 더 낮은 임계값을 설정할 수 있습니다. 임계값이 낮을수록 더 강력한 종속성만 검색됩니다.

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

이 함수는 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 종속성을 시각화할 수 있습니다. 이 함수는 결과 FabricDataFrame을 가져와 find_dependencies 열과 열 그룹 간의 종속성에 대한 시각적 표현을 만듭니다.

다음 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 보스턴 2
12345 Seattle 1

이 출력은 동일한 우편 번호(12345)가 서로 다른 두 도시(보스턴 및 시애틀)에 연결되어 있음을 나타내며 데이터 세트 내에서 데이터 품질 문제를 시사합니다.

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

출력은 데이터 세트의 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 누락된 값을 처리하고, 위반 값에 매핑된 값을 표시하고, 반환된 위반 횟수를 제한하고, 개수 또는 결정 열별로 결과를 정렬하는 더 많은 옵션을 제공합니다. (TODO: API 문서에 연결)

생성된 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(종속) 열 간에 함수 제약 조건을 적용합니다. 결정자의 각 값에 대해 종속 항목의 가장 일반적인 값이 선택되고 다른 값이 있는 모든 행이 삭제됩니다. 예를 들어 다음 데이터 세트가 제공됩니다.

ZIP CITY
12345 Seattle
12345 보스턴
12345 보스턴
98765 Baltimore
00000 샌프란시스코

CITY=Seattle이 있는 행이 삭제되고 기능 종속성 ZIP -> CITY가 출력에 포함됩니다.

이 함수는 drop_dependency_violations 출력의 verbose 세부 정보를 제어하는 옵션을 제공합니다. 설정 verbose=1하면 삭제된 행 수를 볼 수 있으며 verbose=2 삭제된 행의 전체 행 콘텐츠를 볼 수 있습니다.

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