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