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 ayudarle a descubrir patrones y relaciones en los datos, lo que puede ser útil para la ingeniería de características, la limpieza de datos y la 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á 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.
- Vaya a la experiencia de Ciencia de datos 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 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
Buscar dependencias funcionales en datos
La función find_dependencies
de SemPy detecta dependencias funcionales entre las columnas de un FabricDataFrame.
La función utiliza un umbral de entropía condicional para descubrir dependencias funcionales aproximadas, donde una entropía condicional baja indica una fuerte dependencia entre columnas.
Para que la función find_dependencies
sea más selectiva, puede establecer un umbral inferior en la entropía condicional. El umbral inferior significa que solo se detectarán dependencias más fuertes.
El siguiente fragmento de código de Python muestra cómo usar 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()
La función find_dependencies
devuelve un FabricDataFrame con dependencias detectadas entre columnas.
Las columnas que tienen una asignación 1:1 se representarán como una lista.
La función también intenta eliminar las posibles dependencias quitando bordes transitivos.
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 que las dependencias no sean transitivas, como en el ejemplo siguiente:
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 el ejemplo siguiente:
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
), puede visualizar las dependencias mediante 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.
El siguiente 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 surgir en varias formas, como valores que faltan, incoherencias o imprecisiones. Identificar y solucionar estos problemas es fundamental 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 ayudarle 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 ser útil para inspeccionar dependencias aproximadas e identificar problemas de calidad de datos.
En el código siguiente se muestra un ejemplo de cómo usar 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 que existe una dependencia funcional entre las columnas ZIP (determinante) y CITY (dependiente). Si el conjunto de datos presenta problemas de calidad, como la asignación de un mismo código postal a varias ciudades, la función mostrará los valores infractores:
ZIP | CITY | count |
---|---|---|
12345 | Boston | 2 |
12345 | Seattle | 1 |
Esta salida indica que el mismo código postal (12345) está asociado a dos ciudades diferentes (Boston y Seattle), lo que sugiere un problema de calidad de datos dentro del conjunto de datos.
La función list_dependency_violations
proporciona más opciones para 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 por recuento o columna determinante.
La salida de list_dependency_violations
puede ayudar a identificar problemas de calidad de datos en el conjunto de datos.
Sin embargo, es esencial 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.
Esta acción puede implicar una mayor 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 afectar negativamente a la confiabilidad y validez de cualquier análisis o modelo basado en los datos. Identificar y solucionar estos problemas es fundamental para garantizar la precisión de los resultados. 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 visualización de estas infracciones puede proporcionar una mejor comprensión de los problemas y ayudarle 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, lo que facilita la comprensión de la naturaleza y la extensión de los problemas de calidad de los datos.
En el código siguiente se muestra un ejemplo de cómo usar 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 que existe una dependencia funcional entre las columnas ZIP (determinante) y CITY (dependiente). Si el conjunto de datos presenta problemas de calidad, como 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 para tratar 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 visualización generada por plot_dependency_violations
puede ayudarle a identificar problemas de calidad de datos en el conjunto de datos y comprender su naturaleza y extensión.
Al examinar el gráfico, puede obtener información sobre las relaciones entre las columnas determinantes y dependientes e identificar posibles errores o incoherencias en los datos.
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. Una manera de mejorar la calidad de los datos es aplicar restricciones funcionales entre columnas de un conjunto de datos. Las restricciones funcionales pueden ayudar a garantizar que las relaciones entre columnas sean coherentes y precisas, lo que puede dar lugar a resultados más precisos en el análisis o modelo.
La función drop_dependency_violations
puede ayudar a aplicar restricciones funcionales entre columnas de un conjunto de datos quitando 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 cumplen la restricción funcional entre las dos columnas.
En el código siguiente se muestra un ejemplo de cómo usar 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")
En este ejemplo, 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 el siguiente conjunto de datos:
ZIP | CITY |
---|---|
12345 | Seattle |
12345 | Boston |
12345 | Boston |
98765 | Baltimore |
00000 | San Francisco |
La fila con CITY=Seattle se quitaría y la dependencia funcional ZIP:> CITY se mantendría en la salida.
La función drop_dependency_violations
proporciona la opción verbose
para controlar el nivel de detalle de la salida. Al establecer verbose=1
, puede ver el número de filas eliminadas y verbose=2
le permite ver todo el contenido de fila de las filas eliminadas.
Mediante 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, es fundamental considerar detenidamente el contexto de los datos y las restricciones funcionales que se decida imponer para asegurarse de que no se está quitando información valiosa del conjunto de datos sin querer.