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. Uma compreensão dessas dependências pode ajudá-lo a descobrir padrões e relacionamentos em seus dados, o que pode ser útil para 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ê usará 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 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ê 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  

Localizar dependências funcionais nos dados

A find_dependencies função no SemPy deteta dependências funcionais entre as colunas de um FabricDataFrame. A função usa um limiar de entropia condicional para descobrir dependências funcionais aproximadas, onde baixa entropia condicional indica forte dependência entre colunas. Para tornar a função mais seletiva, você pode definir um limite mais baixo na entropia find_dependencies condicional. O limiar inferior significa que apenas serão detetadas dependências mais fortes.

O trecho de código Python a seguir demonstra como usar find_dependencieso .

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. As colunas que têm um mapeamento 1:1 serão representadas como uma lista. A função também tenta podar as dependências potenciais removendo bordas transitivas.

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 no exemplo a seguir:

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 no exemplo a seguir:

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

O trecho de código Python a seguir demonstra como usar plot_dependencieso .

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

Problemas de qualidade de dados podem surgir de várias formas, como valores ausentes, inconsistências ou imprecisões. Identificar e abordar estas questões é crucial para garantir a fiabilidade e validade de qualquer análise ou modelo baseado nos dados. Uma maneira de detetar problemas de qualidade de dados é examinando violações de dependências funcionais entre colunas em um conjunto de dados.

A list_dependency_violations função pode ajudá-lo a identificar 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 valores que violam a dependência funcional, juntamente com a contagem de suas respetivas ocorrências. Isso pode ser útil para inspecionar dependências aproximadas e identificar problemas de qualidade de dados.

O código a seguir mostra um exemplo de 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 que existe uma dependência funcional entre as colunas ZIP (determinante) e CITY (dependente). Se o conjunto de dados tiver problemas de qualidade de dados, como o mesmo CEP sendo atribuído a várias cidades, a função produzirá os valores violadores:

CEP CIDADE contagem
12345 Boston 2
12345 Porto 1

Esta saída indica que o mesmo CEP (12345) está anexado a duas cidades diferentes (Boston e Seattle), sugerindo um problema de qualidade de dados dentro do conjunto de dados.

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

A saída de pode ajudar a identificar problemas de qualidade de dados em seu conjunto de list_dependency_violations dados. No entanto, é essencial examinar cuidadosamente os resultados e considerar o contexto dos seus dados para determinar o curso de ação mais apropriado para abordar os problemas identificados. Esse curso de ação pode envolver limpeza, validação ou exploração de dados adicionais para garantir a confiabilidade e validade de sua análise ou modelo.

Visualize problemas de qualidade de dados

Problemas de qualidade de dados podem afetar negativamente a confiabilidade e a validade de qualquer análise ou modelo construído sobre os dados. Identificar e abordar esses problemas é crucial para garantir a precisão dos seus resultados. Uma maneira de detetar problemas de qualidade de dados é examinando violações de dependências funcionais entre colunas em um conjunto de dados. A visualização dessas violações pode fornecer uma melhor compreensão dos problemas 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, essa função mostra os valores violadores em um formato gráfico, facilitando a compreensão da natureza e extensão dos problemas de qualidade de dados.

O código a seguir mostra um exemplo de 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 que existe uma dependência funcional entre as colunas ZIP (determinante) e CITY (dependente). Se o conjunto de dados tiver problemas de qualidade de dados, como o mesmo CEP sendo atribuído a várias cidades, a função gerará um gráfico dos valores violadores.

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

A visualização gerada por plot_dependency_violations pode ajudá-lo a identificar problemas de qualidade de dados em seu conjunto de dados e entender sua natureza e extensão. Ao examinar o gráfico, você pode obter informações sobre as relações entre colunas determinantes e dependentes e identificar possíveis erros ou inconsistências em seus dados.

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. Uma maneira de melhorar a qualidade dos dados é impondo restrições funcionais entre colunas em um conjunto de dados. As restrições funcionais podem ajudar a garantir que as relações entre colunas sejam consistentes e precisas, o que pode levar a resultados mais precisos em sua análise ou modelo.

A drop_dependency_violations função pode ajudar a impor restrições funcionais entre colunas em um conjunto de dados descartando 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 aderem à restrição funcional entre as duas colunas.

O código a seguir mostra um exemplo de 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")

Neste exemplo, 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 o seguinte conjunto de dados:

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

A linha com CITY=Seattle seria descartada, e a dependência funcional ZIP -> CITY mantém na saída.

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

Usando a drop_dependency_violations função, você 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, é essencial considerar cuidadosamente o contexto dos seus dados e as restrições funcionais que você escolhe impor para garantir que você não esteja removendo inadvertidamente informações valiosas do seu conjunto de dados.