No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Visualizaci贸n de valores faltantes

7/21
Recursos

Aportes 13

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Otra visualizaci贸n muy porte de missigno es la matriz de correlaci贸n. Da mucha informaci贸n

Si tienes el mismo error como yo:

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)

Visualizacion de Datos Faltantes

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.

  • Visualizacion de de los datos faltantes para cada variable mediante un grafico de paleta
# Grafica de p谩letas
riskfactors_df.missing.missing_variable_plot()
  • Visualizacion de datos faltantes en los registros/Filas
riskfactors_df.missing.missing_case_plot()
  • Visualizacion de datos faltantes para bloques de 10 registros
(
    riskfactors_df
    .missing
    .missing_variable_span_plot(
        variable='weight_lbs',
        span_every=10,
        rot=0 #rotacion de los labels
    )
)
  • Visualizacion de datos faltantes para todas las variables del dataFrame
#Visualiacion mediante una funcion de pandas
missingno.bar(df = riskfactors_df)
  • Visualizacion de datos faltantes para cada variable mediante una matriz
missingno.matrix(df = riskfactors_df)
  • Visualizacion de apariciones conjuntas de varias variables
(
    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

https://www.youtube.com/watch?v=Wdvwer7h-8w&t=523s

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()

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:

  1. Hay aproximadamente 30 registros (filas) en los que no hay valores nulos en ambas variables.

  2. Hay m谩s de 200 registros (filas) con valores nulos en pregnant, en los valores v谩lidos de weight.

  3. Hay 1 aproximadamente valor nulo en weight en los registros (filas)con valores v谩lidos de pregnant.

  4. Hay aproximadamente 10 registros (filas) en los que hay valores nulos en ambas variables.

En el minuto 4:18 me parece que tuvo que decir que la mayoria de las filas tuvo 4 errores faltantes (no 5)

Explicaci贸n visual de qu茅 es un UpSet:

ERROR: OptionError: "No such key(s): 鈥榤ode.use_inf_as_null鈥 missing_case_plot

#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()[鈥榥_missing鈥橾,color=鈥榖lack鈥,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(鈥渘_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.