Cesar Qui
David Rosas
Gracias! Habia cambiado a seaborn==0.11 en el requirements.txt y no me funcionaba este bloque de codigo.
Al agregar fill=True lo logre
JULIO ALFONSO MESA PÉREZ
Muchas gracias por la ayuda.
( riskfactors_df .missing.bind_shadow_matrix(only_missing=True) .pipe( lambda df: ( sns.boxenplot( data=df, x = 'weight_lbs_NA', #variables con datos faltantes y = 'age' #variable de comparacion ) ) ) )
( riskfactors_df .missing.bind_shadow_matrix(only_missing=True) .pipe( lambda df: ( sns.displot( data=df, x = 'age', #variable de distribucion hue = 'weight_lbs_NA', #variable de comparacion kind= 'kde' #distribucion de densidad ) ) ) )
( riskfactors_df .missing.bind_shadow_matrix(only_missing=True) .pipe( lambda df: ( sns.displot( data=df, x = 'age', #variable de distribucion col = 'weight_lbs_NA', #variable de comparacion ) ) ) )
# Eje de las y independientes para cada grafico ( riskfactors_df .missing.bind_shadow_matrix(only_missing=True) .pipe( lambda df: ( sns.displot( data=df, x = 'age', #variable de distribucion col = 'weight_lbs_NA', #variable de comparacion facet_kws={ 'sharey': False } ) ) ) )
( riskfactors_df .missing.bind_shadow_matrix(only_missing=True) .pipe( lambda df: ( sns.displot( data=df, x = 'age', #variable de distribucion col = 'marital_NA', #variable de comparacion row = 'weight_lbs_NA' ) ) ) )
Cesar Qui
David Rosas
Gracias! Habia cambiado a seaborn==0.11 en el requirements.txt y no me funcionaba este bloque de codigo.
Al agregar fill=True lo logre
JULIO ALFONSO MESA PÉREZ
Muchas gracias por la ayuda.
Eduard Giraldo Martínez
Tratando de seguir la clase, me aparece este error con las gráficas de displot y boxenplot
OptionError: "No such keys(s): 'mode.use_inf_as_null'"
Con gráficas tipo Boxplot, si funciona con normalidad
Carlos Enrique Cervantes Aguilar
Tengo exactamente el mismo problema y no supe como arreglarlo, me rendí
José Rodrigo Arana Hi
Tuve el mismo problema, pero pude resolverlo. Es un error desde Seaborn porque Conda utiliza una versión vieja.
En su entorno, eliminen seaborn. Luego, hagan un
pip install seaborn
De esta manera tendrán la versión más reciente, y todas las gráficas en el curso les funcionará.
José Rodrigo Arana Hi
En esta clase aplicamos el concepto de la matriz de sombras para crear visualizaciones de una variable que no tiene valores faltantes, con otra que sí, permitiéndote construir visualizaciones que te ayuden a identificar rápidamente si existen sesgos o no en la presencia o ausencia de otros valores faltantes.
Mario Alexander Vargas Celis
Juan Pablo García Chávez
Luis Miguel Rodríguez
¿Por qué visualizar una sola variable?
Analizar una variable de forma aislada te ayuda a entender la magnitud del problema antes de buscar correlaciones complejas. Si notas que una columna crítica tiene un alto porcentaje de valores nulos, sabrás de inmediato que cualquier modelo predictivo basado en ella estará sesgado, permitiéndote descartarla o buscar fuentes alternativas.
Angie Daniela Calderon Cardozo
¿Alguno sabe cómo solucionar el error "No such keys(s): 'mode.use_inf_as_null'"?
Mauricio Escobar
Pregunta: A raíz del análisis de la columna age vs la presencia / ausencia de nulos en otras columnas, se me ocurre entrenar un modelo que sea capaz de predecir en función de una edad, cuál sería la probabilidad de que haya nulos.
Sin embargo el problema es que precisamente el análisis debería tener datos sobre los nulos. Lo que me preocupa es la naturaleza de los datos (son nulos). De qué forma podría hacerlo?
Se me ocurre usar como variable objetivo a la edad, y como variables de análisis las columnas binarias de la matriz de sombras. Quizás una regresión logística. Es posible hacer esto?
En la grafica displot me salia este error:
ValueError: Multi-dimensional indexing (e.g. obj[:, None]) is no longer supported. Convert to a numpy array before indexing instead.
Por lo que cambie el codigo este:
( riskfactors_df .missing .bind_shadow_matrix(only_missing=True) .pipe( lambda df:( sns.displot( data = df, x = 'age', kind = 'kde' hue = 'weight_lbs_NA' ) ) ) )
Por este codigo:
( riskfactors_df .missing .bind_shadow_matrix(only_missing=True) .pipe( lambda df:( sns.displot( data = df, x = 'age', kind = 'kde' hue = 'weight_lbs_NA', fill = True ) ) ) )
Y me funcionó.
La visualización de valores faltantes en una variable es una técnica útil para identificar qué parte de los datos está incompleta y cómo afecta el análisis. Puedes usar bibliotecas como seaborn, matplotlib o missingno en Python para crear gráficos que muestren los valores faltantes.
### Ejemplo 1: Gráfico de Barras con seaborn
Puedes visualizar los valores faltantes en una variable mediante un gráfico de barras que muestre la proporción de valores faltantes y no faltantes.
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt \# Crear un DataFrame de ejemplo data = {'Variable': \[1, 2, None, 4, None, 6, 7, None, 9, 10]} df = pd.DataFrame(data) \# Crear una columna booleana para indicar si hay valores faltantes df\['Missing'] = df\['Variable'].isnull() \# Visualización con seaborn sns.countplot(x='Missing', data=df, palette='viridis') plt.title('Valores Faltantes en la Variable') plt.xlabel('Valores Faltantes') plt.ylabel('Conteo') plt.xticks(\[0, 1], \['No Faltante', 'Faltante']) plt.show()
### Ejemplo 2: Usar missingno para Visualizar Valores Faltantes
La biblioteca missingno es excelente para visualizar los valores faltantes en un conjunto de datos con gráficos fáciles de interpretar.
import pandas as pd import missingno as msno \# Crear un DataFrame de ejemplo con valores faltantes data = {'Variable1': \[1, 2, None, 4, 5],   'Variable2': \[5, None, 7, None, 9],   'Variable3': \[None, 2, 3, 4, None]} df = pd.DataFrame(data) \# Visualización de un gráfico de valores faltantes con missingno msno.bar(df) plt.show()
### Ejemplo 3: Mapa de Calor para Ver la Distribución de Valores Faltantes
Otra forma es crear un **mapa de calor** para ver los valores faltantes en todo el conjunto de datos y visualizar dónde se encuentran esos valores faltantes.
import seaborn as sns import matplotlib.pyplot as plt \# Crear un DataFrame con algunos valores faltantes data = {'Variable1': \[1, 2, None, 4, 5],   'Variable2': \[None, None, 7, 8, 9],   'Variable3': \[1, None, 3, None, 5]} df = pd.DataFrame(data) \# Visualización de valores faltantes en un mapa de calor plt.figure(figsize=(8, 6)) sns.heatmap(df.isnull(), cbar=False, cmap='viridis') plt.title('Mapa de Calor de Valores Faltantes') plt.show()
### Descripción de los Ejemplos:
1. **Gráfico de Barras con seaborn**: Muestra un conteo de los valores faltantes y no faltantes en una variable específica.
2. **Gráfico de Barras con missingno**: Presenta un resumen visual de los valores faltantes en todas las variables de un DataFrame.
3. **Mapa de Calor**: Ofrece una visualización general de los valores faltantes en forma de mapa de calor, mostrando dónde se encuentran esos valores en las columnas.
Estas técnicas son útiles para diagnosticar la cantidad y distribución de valores faltantes en los datos antes de realizar un análisis o imputación.
¿Te gustaría ver más ejemplos o explicaciones más detalladas?
Matriz de sombras (Shadow Matrix)
1.-4 Palabras clave
isna()suffix / concat2.-4 Preguntas
3.-Notas completas del tema
A) Idea central
La shadow matrix convierte la ausencia de datos en información explícita:
missingnot missingAsí puedes:
B) Construcción paso a paso
isna() para obtener True/FalseTrue → "missing"False → "not missing""_na"C) ¿Por qué sirve?
Porque convierte una pregunta como:
D) Aplicación analítica
Una vez creada la shadow matrix, puedes hacer preguntas como:
E) only_missing=True
F) Matriz nabular
Al combinar:
obtienes una estructura más rica llamada matriz nabular, útil para análisis y visualización conjunta.
4.-Código necesario
import pandas as pd import numpy as np # ========================================================== # Dataset de ejemplo # ========================================================== df = pd.DataFrame({ "edad": [55, 62, 70, 58, 65, 49, 61, 73], "peso": [80, np.nan, 75, 90, np.nan, 68, 72, np.nan], "glucosa": [100, 120, 130, 110, 140, 105, 115, 125] }) print("== DataFrame original ==") print(df) # ========================================================== # Ejercicio 1/2: Construir la shadow matrix # ========================================================== print("\n--- Ejercicio 1/2: shadow matrix ---") shadow = ( df.isna() .replace({True: "missing", False: "not missing"}) .add_suffix("_na") ) print("\n== Shadow matrix ==") print(shadow) # Unir al dataset original nabular = pd.concat([df, shadow], axis=1) print("\n== Datos nabulares ==") print(nabular) # ========================================================== # Ejercicio 2/2: Analizar una variable según faltantes de otra # ========================================================== print("\n--- Ejercicio 2/2: comparación por grupos ---") # Comparar la edad según falte o no el peso resultado = nabular.groupby("peso_na")["edad"].describe() print("\n== Edad según presencia/ausencia de peso ==") print(resultado) # Si se desea ver como tabla más limpia print("\n== Reset index ==") print(resultado.reset_index()) # ========================================================== # Extra: shadow matrix solo para columnas con faltantes # ========================================================== print("\n--- Extra: solo columnas con faltantes ---") cols_with_missing = df.columns[df.isna().any()] shadow_only = ( df[cols_with_missing] .isna() .replace({True: "missing", False: "not missing"}) .add_suffix("_na") ) nabular_only = pd.concat([df, shadow_only], axis=1) print("\n== Nabular con solo columnas faltantes ==") print(nabular_only)
4.- Mapa conceptual
Dataset original | v isna() | v True / False | v missing / not missing | v add_suffix("_na") | v concat(original, shadow) | v Matriz nabular | v Comparar estadísticos y relaciones
5.-Pequeño resumen
La shadow matrix transforma la ausencia de datos en columnas explícitas que indican si un valor está presente o no. Al combinarla con el dataset original, puedes comparar estadísticos entre grupos con y sin faltantes y así buscar patrones o relaciones con otras variables. Es una forma muy potente de pasar de “ver NA” a entender qué significan esos NA.
Si quieres, ahora te hago el siguiente apunte sobre visualización con shadow matrix y relaciones entre faltantes.