Partilhar via


Detete, explore e valide dependências funcionais em seus dados, usando link semântico

Dependências funcionais são relações entre colunas em uma tabela, onde os valores em uma coluna são usados para determinar os valores em outra coluna. Compreender essas dependências pode ajudá-lo a descobrir padrões e relacionamentos em seus dados, o que, por sua vez, pode ajudar com tarefas de engenharia de recursos, limpeza de dados e criação de modelos. As dependências funcionais atuam como um invariante eficaz que permite localizar e corrigir problemas de qualidade de dados que poderiam ser difíceis de detetar de outra forma.

Neste artigo, você usa o link semântico para:

  • Localizar dependências entre colunas de um FabricDataFrame
  • Visualize dependências
  • Identificar problemas de qualidade de dados
  • Visualize problemas de qualidade de dados
  • Impor restrições funcionais entre colunas em um conjunto de dados

Pré-requisitos

  • Obtenha uma assinatura do Microsoft Fabric. Ou inscreva-se para uma avaliação gratuita do Microsoft Fabric.

  • Entre no Microsoft Fabric.

  • Use o seletor de experiência no lado esquerdo da sua página inicial para alternar para a experiência Synapse Data Science.

    Captura de tela do menu do seletor de experiência, mostrando onde selecionar Ciência de Dados.

  • Vá para a experiência de Ciência de Dados encontrada no Microsoft Fabric.
  • Crie um novo bloco de notas para copiar/colar código nas células.
  • Para o Spark 3.4 e superior, o link semântico está disponível no tempo de execução padrão ao usar o Fabric e não há necessidade de instalá-lo. Se você estiver usando o Spark 3.3 ou inferior, ou se quiser atualizar para a versão mais recente do Link Semântico, poderá executar o comando: python %pip install -U semantic-link  
  • Adicione um Lakehouse ao seu bloco de anotações.

Para o Spark 3.4 e superior, o link semântico está disponível no tempo de execução padrão ao usar o Fabric e não há necessidade de instalá-lo. Se você usar o Spark 3.3 ou inferior, ou se quiser atualizar para a versão mais recente do Link Semântico, execute este comando:

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

A find_dependencies função retorna um FabricDataFrame com dependências detetadas entre colunas. Uma lista representa colunas que têm um mapeamento 1:1. A função também remove bordas transitivas, para tentar podar as dependências potenciais.

Quando você especifica a dropna=True opção, as linhas que têm um valor NaN em qualquer coluna são eliminadas da avaliação. Isso pode resultar em dependências não transitivas, como mostrado neste exemplo:

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

Em alguns casos, a cadeia de dependência pode formar ciclos quando você especifica a dropna=True opção, conforme mostrado neste exemplo:

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

Visualizar dependências em dados

Depois de encontrar dependências funcionais em um conjunto de dados (usando find_dependencies), você pode visualizar as dependências com a plot_dependency_metadata função. Essa função obtém o FabricDataFrame resultante find_dependencies e cria uma representação visual das dependências entre colunas e grupos de colunas.

Este trecho de código Python mostra como usar 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)

A plot_dependency_metadata função gera uma visualização que mostra os agrupamentos 1:1 de colunas. As colunas que pertencem a um único grupo são colocadas em uma única célula. Se nenhum candidato adequado for encontrado, um FabricDataFrame vazio será retornado.

Captura de tela mostrando a saída da função plot_dependencies.

Identificar problemas de qualidade de dados

Os problemas de qualidade de dados podem ter várias formas - por exemplo, valores ausentes, inconsistências ou imprecisões. Identificar e abordar essas questões é importante para garantir a confiabilidade e a validade de qualquer análise ou modelo construído sobre os dados. Uma maneira de detetar problemas de qualidade de dados é examinar violações de dependências funcionais entre colunas em um conjunto de dados.

A list_dependency_violations função pode ajudar a identificar violações de dependências funcionais entre colunas de conjunto de dados. Dada uma coluna determinante e uma coluna dependente, esta função mostra valores que violam a dependência funcional, juntamente com a contagem de suas respetivas ocorrências. Isso pode ajudar a inspecionar dependências aproximadas e identificar problemas de qualidade de dados.

Este trecho de código mostra como usar a list_dependency_violations função:

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

Neste exemplo, a função assume uma dependência funcional entre as colunas ZIP (determinante) e CITY (dependente). Se o conjunto de dados tiver problemas de qualidade de dados - por exemplo, o mesmo CEP atribuído a várias cidades - a função produz os dados com os problemas:

CEP CIDADE contagem
12345 Boston 2
12345 Porto 1

Esta saída indica que duas cidades diferentes (Boston e Seattle) têm o mesmo valor de CEP (12345). Isso sugere um problema de qualidade de dados dentro do conjunto de dados.

A list_dependency_violations função fornece mais opções que podem lidar com valores ausentes, mostrar valores mapeados para valores violadores, limitar o número de violações retornadas e classificar os resultados por contagem ou coluna determinante.

A list_dependency_violations saída pode ajudar a identificar problemas de qualidade de dados do conjunto de dados. No entanto, você deve examinar cuidadosamente os resultados e considerar o contexto de seus dados, para determinar o curso de ação mais apropriado para resolver os problemas identificados. Essa abordagem pode envolver mais limpeza, validação ou exploração de dados para garantir a confiabilidade e a validade de sua análise ou modelo.

Visualize problemas de qualidade de dados

Problemas de qualidade de dados podem prejudicar a confiabilidade e a validade de qualquer análise ou modelo construído sobre esses dados. Identificar e abordar esses problemas é importante para garantir a precisão de seus resultados. Para detetar problemas de qualidade de dados, você pode examinar violações de dependências funcionais entre colunas em um conjunto de dados. A visualização dessas violações pode mostrar os problemas com mais clareza e ajudá-lo a resolvê-los de forma mais eficaz.

A plot_dependency_violations função pode ajudar a visualizar violações de dependências funcionais entre colunas em um conjunto de dados. Dada uma coluna determinante e uma coluna dependente, esta função mostra os valores violadores em um formato gráfico, para facilitar a compreensão da natureza e extensão dos problemas de qualidade de dados.

Este trecho de código mostra como usar a plot_dependency_violations função:

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

Neste exemplo, a função assume uma dependência funcional existente entre as colunas ZIP (determinante) e CITY (dependente). Se o conjunto de dados tiver problemas de qualidade de dados - por exemplo, o mesmo CEP atribuído a várias cidades - a função gera um gráfico dos valores violadores.

A plot_dependency_violations função fornece mais opções que podem lidar com valores ausentes, mostrar valores mapeados para valores violadores, limitar o número de violações retornadas e classificar os resultados por contagem ou coluna determinante.

A plot_dependency_violations função gera uma visualização que pode ajudar a identificar problemas de qualidade de dados do conjunto de dados. No entanto, você deve examinar cuidadosamente os resultados e considerar o contexto de seus dados, para determinar o curso de ação mais apropriado para resolver os problemas identificados. Essa abordagem pode envolver mais limpeza, validação ou exploração de dados para garantir a confiabilidade e a validade de sua análise ou modelo.

Captura de tela mostrando a saída da função plot_dependency_violations.

Impor restrições funcionais

A qualidade dos dados é crucial para garantir a fiabilidade e validade de qualquer análise ou modelo baseado num conjunto de dados. A imposição de restrições funcionais entre colunas em um conjunto de dados pode ajudar a melhorar a qualidade dos dados. As restrições funcionais podem ajudar a garantir que as relações entre colunas tenham precisão e consistência, o que pode levar a análises ou resultados de modelo mais precisos.

A drop_dependency_violations função pode ajudar a impor restrições funcionais entre colunas em um conjunto de dados. Linhas que violam uma determinada restrição. Dada uma coluna determinante e uma coluna dependente, esta função remove linhas com valores que não estão em conformidade com a restrição funcional entre as duas colunas.

Este trecho de código mostra como usar a drop_dependency_violations função:

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

Aqui, a função impõe uma restrição funcional entre as colunas ZIP (determinante) e CITY (dependente). Para cada valor do determinante, o valor mais comum do dependente é escolhido e todas as linhas com outros valores são descartadas. Por exemplo, dado esse conjunto de dados, a linha com CITY=Seattle seria descartada e a dependência funcional ZIP -> CITY mantém na saída:

CEP CIDADE
12345 Porto
12345 Boston
12345 Boston
98765 Baltimore
00000 São Francisco

A drop_dependency_violations função fornece a verbose opção de controlar a verbosidade de saída. Ao definir verbose=1, você pode ver o número de linhas soltas. Um verbose=2 valor mostra todo o conteúdo da linha das linhas soltas.

A drop_dependency_violations função pode impor restrições funcionais entre colunas em seu conjunto de dados, o que pode ajudar a melhorar a qualidade dos dados e levar a resultados mais precisos em sua análise ou modelo. No entanto, você deve considerar cuidadosamente o contexto de seus dados e as restrições funcionais que você escolhe impor, para garantir que não remova acidentalmente informações valiosas do seu conjunto de dados.