Otra visualización muy porte de missigno es la matriz de correlación. Da mucha información
Introducción a los valores faltantes
¿Por qué explorar y lidiar con valores faltantes?
Operaciones con valores faltantes
Conociendo datasets para manejo de datos faltantes
Correr una notebook dentro de otra en Deepnote
Extendiendo la API de Pandas
Tabulación de valores faltantes
Visualización de valores faltantes
Manipulación inicial de valores faltantes
Codificación de valores faltantes
Conversión de valores faltantes implícitos en explícitos
Exponer filas faltantes implícitas en explícitas
Tipos de valores faltantes
MCAR, MAR, MNAR en Python
Búsqueda de relaciones de valores faltantes
Matriz de sombras: shadow matrix
Visualización de valores faltantes en una variable
Visualización de valores faltantes en dos variables
Scatterplot con valores faltantes
Correlación de nulidad
Tratamiento de valores faltantes
Eliminación de valores faltantes: pairwise y listwise
Imputación básica de datos
Bonus: visualización múltiple de imputaciones
Cierre de curso
Continúa aprendiendo sobre el manejo de valores faltantes
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Jesús Vélez Santiago
Aportes 16
Preguntas 2
Otra visualización muy porte de missigno es la matriz de correlación. Da mucha información
ValueError Traceback (most recent call last)
Cell In[205], line 1
----> 1 riskfactors_df.missing.missing_variable_plot()
File /var/folders/ts/9c4rwdn15b7cy40fjt97_x6m0000gn/T/ipykernel_57155/805652746.py:147, in MissingMethods.missing_variable_plot(self)
143 plot_range = range(1, len(df.index) + 1)
145 plt.hlines(y=plot_range, xmin=0, xmax=df.n_missing, color="black")
--> 147 plt.plot(df.n_missing, plot_range, "o", color="black")
149 plt.yticks(plot_range, df.variable)
151 plt.grid(axis="y")
File ~/anaconda3/envs/ds-missing-values/lib/python3.9/site-packages/matplotlib/pyplot.py:2757, in plot(scalex, scaley, data, *args, **kwargs)
2755 @_copy_docstring_and_deprecators(Axes.plot)
2756 def plot(*args, scalex=True, scaley=True, data=None, **kwargs):
-> 2757 return gca().plot(
2758 *args, scalex=scalex, scaley=scaley,
2759 **({"data": data} if data is not None else {}), **kwargs)
File ~/anaconda3/envs/ds-missing-values/lib/python3.9/site-packages/matplotlib/axes/_axes.py:1632, in Axes.plot(self, scalex, scaley, data, *args, **kwargs)
1390 """
1391 Plot y versus x as lines and/or markers.
1392
(...)
1629 (``'green'``) or hex strings (``'#008000'``).
...
344 "Multi-dimensional indexing (e.g. `obj[:, None]`) is no longer "
345 "supported. Convert to a numpy array before indexing instead."
346 )
ValueError: Multi-dimensional indexing (e.g. `obj[:, None]`) is no longer supported. Convert to a numpy array before indexing instead.
Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...
Lo solucione en el metodo missing_variable_plot
: cambiando la linea:
plt.plot(df.n_missing, plot_range, 'o', color="black")
a esta:
plt.plot(np.array(df.n_missing), plot_range, 'o', color="black")
PD: es una conversion a un array de numpy(compatibilidad)
Las tablas nos permite conocer las variables con su respectivo porcentaje de datos faltantes. Sin embargo para visualizar aparaciones conjuntas de valores faltantes, es decir que en una variable aparezca un valor faltante y en el mismo registro aparezca un valor faltante en otra variable, las tablas no ayudan. Para ello, utilizamos los utsetplot que establecen diferentes conjuntos de datos y su relacion.
# Grafica de páletas
riskfactors_df.missing.missing_variable_plot()
riskfactors_df.missing.missing_case_plot()
(
riskfactors_df
.missing
.missing_variable_span_plot(
variable='weight_lbs',
span_every=10,
rot=0 #rotacion de los labels
)
)
#Visualiacion mediante una funcion de pandas
missingno.bar(df = riskfactors_df)
missingno.matrix(df = riskfactors_df)
(
riskfactors_df
.missing
.missing_upsetplot(
variables=['pregnant', 'weight_lbs', 'smoke_stop'], # None para mostrar la relacion de todas las variables
element_size = 30 # tamaño de la visualizacion
)
)
Cuando inntntento utilizar el código:
riskfactors_df.missing.missing_case_plot()
Me aparece el siguiente error:
OptionError: "No such keys(s): 'mode.use_inf_as_null'"
No pude solucionarlo, por lo que opté por una alternativa:
(
riskfactors_df
.missing
.missing_case_summary()
.plot(
kind='hist',
x='case',
y='pct_missing',
bins=15,
)
)
Una breve explicación de la librería missingno
Tratando de entender un gráfico UpSetPlot:
Si tenemos el siguiente bloque de código:
(
riskfactors_df
.missing
.missing_upsetplot(
variables = ["pregnant", "weight_lbs"], # Estas son las variables sobre las que se analizarán los valores faltantes.
element_size = 30
)
)
La salida es:
Mi interpretación de la gráfica sería:
Hay aproximadamente 30 registros (filas) en los que no hay valores nulos en ambas variables.
Hay más de 200 registros (filas) con valores nulos en pregnant, en los valores válidos de weight.
Hay 1 aproximadamente valor nulo en weight en los registros (filas)con valores válidos de pregnant.
Hay aproximadamente 10 registros (filas) en los que hay valores nulos en ambas variables.
Para visualizar
riskfactors_df.missing.missing_case_plot()
Creo que hay un detalle con una opción en pandas que fue eliminado pero que sigue siendo invocado en seaborn, por ello los errores. Aquí un codigo temporal:
plt.hist(
riskfactors_df
.missing
.missing_case_summary()['n_missing']
)
plt.show()
En el minuto 4:18 me parece que tuvo que decir que la mayoria de las filas tuvo 4 errores faltantes (no 5)
#Solucion de este error en requirements.txt
#Debe usarse seaborn 0.12.2 o superior
pyjanitor
missingno
numpy
matplotlib==3.5.1
pandas
pyreadr
seaborn==0.12.2
session-info
upsetplot==0.6.1
para el .missing_case_plot()
coloqué este código
plt.hist(
riskfactors_df
.missing
.missing_case_summary()[‘n_missing’],color=‘black’,bins=15
)
plt.show()
Para los que tienen problemas con missing_variable_plot()
Lo solucione con este codigo
def missing_variable_plot(self):
df = self._obj.missing.missing_variable_summary().sort_values(“n_missing”)
plot_range = range(1, len(df.index) + 1)
plt.hlines(y=plot_range, xmin=0, xmax=df.n_missing.values, color="black") # Convierte df.n_missing en un array de NumPy
plt.plot(np.array(df.n_missing), plot_range, 'o', color="black")
plt.yticks(plot_range, df.variable)
plt.grid(axis="y")
plt.xlabel("Number missing")
plt.ylabel("Variable")
plt.show()
Las visualizaciones son esenciales en los procesos de análisis de datos.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?