Detección, exploración y validación de dependencias funcionales en los datos mediante el vínculo semántico
Las dependencias funcionales son relaciones entre columnas de una tabla, donde los valores de una columna se usan para determinar los valores de otra columna. La comprensión de estas dependencias puede ayudarte a descubrir patrones y relaciones en los datos, lo que a su vez puede ayudar con la ingeniería de características, la limpieza de datos y las tareas de creación de modelos. Las dependencias funcionales actúan como una invariante eficaz que permite encontrar y corregir problemas de calidad de los datos que, de otro modo, serían difíciles de detectar.
En este artículo, usarás el vínculo semántico para:
- Buscar dependencias entre columnas de fabricDataFrame
- Visualización de dependencias
- Identificar problemas de calidad de datos
- Visualizar problemas de calidad de datos
- Aplicar restricciones funcionales entre columnas de un conjunto de datos
Requisitos previos
Obtenga una suscripción a Microsoft Fabric. También puede registrarse para obtener una evaluación gratuita de Microsoft Fabric.
Inicie sesión en Microsoft Fabric.
Cambie a la experiencia de ciencia de datos de Synapse mediante el conmutador de experiencia en el lado izquierdo de la página principal.
- Ve a la experiencia de Ciencia de datos que se encuentra en Microsoft Fabric.
- Cree un nuevo cuaderno, para copiar/pegar código en las celdas.
- Para Spark 3.4 y versiones posteriores, el vínculo semántico está disponible en el entorno de ejecución predeterminado al usar Fabric y no es necesario instalarlo. Si usa Spark 3.3 o inferior, o si desea actualizar a la versión más reciente del vínculo semántico, puede ejecutar el comando:
python %pip install -U semantic-link
- Adición de un almacén de lago de datos al cuaderno.
Para Spark 3.4 y versiones posteriores, el vínculo semántico está disponible en el entorno de ejecución predeterminado al usar Fabric y no es necesario instalarlo. Si usas Spark 3.3 o inferior, o si deseas actualizar a la versión más reciente del vínculo semántico, ejecuta 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()
La función find_dependencies
devuelve un FabricDataFrame con dependencias detectadas entre columnas.
Una lista representa las columnas que tienen una asignación 1:1. La función también quita bordes transitivos para intentar eliminar las posibles dependencias.
Al especificar la opción dropna=True
, las filas que tienen un valor NaN en cualquiera de las columnas se eliminan de la evaluación. Esto puede dar lugar a dependencias no transitivas, como se muestra en este ejemplo:
A | B | C |
---|---|---|
1 | 1 | 1 |
1 | 1 | 1 |
1 | NaN | 9 |
2 | NaN | 2 |
2 | 2 | 2 |
En algunos casos, la cadena de dependencias puede formar ciclos al especificar la opción dropna=True
, como se muestra en este ejemplo:
A | B | C |
---|---|---|
1 | 1 | NaN |
2 | 1 | NaN |
NaN | 1 | 1 |
NaN | 2 | 1 |
1 | NaN | 1 |
1 | NaN | 2 |
Visualizar dependencias en datos
Después de buscar dependencias funcionales en un conjunto de datos (mediante find_dependencies
), puedes visualizar las dependencias con la función plot_dependency_metadata
. Esta función toma el fabricDataFrame resultante de find_dependencies
y crea una representación visual de las dependencias entre columnas y grupos de columnas.
Este fragmento de código de Python muestra cómo 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)
La función plot_dependency_metadata
genera una visualización que muestra las agrupaciones individuales de columnas.
Las columnas que pertenecen a un único grupo se colocan en una sola celda. Si no se encuentra ningún candidato adecuado, se devuelve un FabricDataFrame vacío.
Identificar problemas de calidad de datos
Los problemas de calidad de los datos pueden tener varias formas, por ejemplo, valores que faltan, incoherencias o imprecisiones. Identificar y solucionar estos problemas es importante para garantizar la confiabilidad y validez de cualquier análisis o modelo basado en los datos. Una manera de detectar problemas de calidad de datos es examinar las infracciones de las dependencias funcionales entre las columnas de un conjunto de datos.
La función list_dependency_violations
puede ayudar a identificar infracciones de dependencias funcionales entre columnas de un conjunto de datos. Dada una columna determinante y una columna dependiente, esta función muestra valores que infringen la dependencia funcional, junto con el recuento de sus respectivas apariciones. Esto puede ayudar a inspeccionar dependencias aproximadas e identificar problemas de calidad de datos.
Este fragmento de código muestra cómo se usa la función 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")
En este ejemplo, la función supone una dependencia funcional entre las columnas ZIP (determinante) y CITY (dependiente). Si el conjunto de datos presenta problemas de calidad (por ejemplo, la asignación de un mismo código postal a varias ciudades), la función genera los datos con los problemas:
ZIP | CITY | count |
---|---|---|
12345 | Boston | 2 |
12345 | Seattle | 1 |
Esta salida indica que dos ciudades diferentes (Boston y Seattle) tienen el mismo valor de código postal (12345). Esto sugiere un problema de calidad de datos dentro del conjunto de datos.
La función list_dependency_violations
ofrece más opciones que pueden controlar los valores que faltan, mostrar los valores asignados a los valores de infracción, limitar el número de infracciones devueltas y ordenar los resultados en función del número o columna determinante.
La salida list_dependency_violations
puede ayudar a identificar problemas de calidad de datos del conjunto de datos. Sin embargo, debes examinar cuidadosamente los resultados y tener en cuenta el contexto de los datos para determinar el curso de acción más adecuado para abordar los problemas identificados. Este enfoque puede implicar más limpieza, validación o exploración de datos para garantizar la confiabilidad y validez del análisis o modelo.
Visualizar problemas de calidad de datos
Los problemas de calidad de los datos pueden dañar la confiabilidad y validez de cualquier análisis o modelo basado en los datos. Identificar y solucionar estos problemas es importante para garantizar la precisión de los resultados. Para detectar problemas de calidad de datos, puedes examinar las infracciones de las dependencias funcionales entre las columnas de un conjunto de datos. La visualización de estas infracciones puede mostrar los problemas con mayor claridad y ayudarte a abordarlos de forma más eficaz.
La función plot_dependency_violations
puede ayudar a visualizar las infracciones de las dependencias funcionales entre las columnas de un conjunto de datos. Dada una columna determinante y una columna dependiente, esta función muestra los valores infractores en un formato gráfico para facilitar la comprensión de la naturaleza y la extensión de los problemas de calidad de los datos.
Este fragmento de código muestra cómo se usa la función 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")
En este ejemplo, la función supone una dependencia funcional existente entre las columnas ZIP (determinante) y CITY (dependiente). Si el conjunto de datos presenta problemas de calidad (por ejemplo, la asignación de un mismo código postal a varias ciudades), la función genera un gráfico de los valores infractores.
La función plot_dependency_violations
ofrece más opciones que pueden controlar los valores que faltan, mostrar los valores asignados a los valores de infracción, limitar el número de infracciones devueltas y ordenar los resultados en función del número o columna determinante.
La función plot_dependency_violations
genera una visualización que puede ayudar a identificar problemas de calidad de datos del conjunto de datos. Sin embargo, debes examinar cuidadosamente los resultados y tener en cuenta el contexto de los datos para determinar el curso de acción más adecuado para abordar los problemas identificados. Este enfoque puede implicar más limpieza, validación o exploración de datos para garantizar la confiabilidad y validez del análisis o modelo.
Aplicar restricciones funcionales
La calidad de los datos es fundamental para garantizar la confiabilidad y validez de cualquier análisis o modelo basado en un conjunto de datos. El cumplimiento de restricciones funcionales entre columnas de un conjunto de datos puede ayudar a mejorar la calidad de los datos. Las restricciones funcionales pueden ayudar a garantizar que las relaciones entre columnas tengan coherencia y precisión, lo que puede dar lugar a resultados del análisis o modelo más precisos.
La función drop_dependency_violations
puede ayudar a aplicar restricciones funcionales entre columnas de un conjunto de datos. Filas que infringen una restricción determinada. Dada una columna determinante y una columna dependiente, esta función quita las filas con valores que no se ajustan a la restricción funcional entre las dos columnas.
Este fragmento de código muestra cómo se usa la función 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")
Aquí, la función aplica una restricción funcional entre las columnas ZIP (determinante) y CITY (dependiente). Para cada valor del determinante, se selecciona el valor más común del dependiente y se quitan todas las filas con otros valores. Por ejemplo, dado este conjunto de datos, la fila con CITY=Seattle se quitaría y la dependencia funcional ZIP:> CITY se mantendría en la salida:
ZIP | CITY |
---|---|
12345 | Seattle |
12345 | Boston |
12345 | Boston |
98765 | Baltimore |
00000 | San Francisco |
La función drop_dependency_violations
proporciona la opción verbose
para controlar el nivel de detalle de la salida. Al establecer verbose=1
, puedes ver el número de filas descartadas. Un valor de verbose=2
muestra todo el contenido de fila de las filas quitadas.
La función drop_dependency_violations
puede aplicar restricciones funcionales entre columnas del conjunto de datos, lo que puede ayudar a mejorar la calidad de los datos y dar lugar a resultados más precisos en el análisis o el modelo. Sin embargo, debes considerar detenidamente el contexto de los datos y las restricciones funcionales que se decide imponer para asegurarte de que no quitas accidentalmente información valiosa del conjunto de datos.