Tomas Pucutay
Amaury Antonio Avila Martinez
Muchas gracias, de mucha ayuda tu aportación.
Santiago Espinel
duré una hora intentando resolverlo y acá estaba la solución jajajaja gracias crack
Tomas Pucutay
Amaury Antonio Avila Martinez
Muchas gracias, de mucha ayuda tu aportación.
Santiago Espinel
duré una hora intentando resolverlo y acá estaba la solución jajajaja gracias crack
Tabulacion de Valores Faltantes
Tabular es expresar valores, magnitudes u otros datos por medio de tablas.
MANUEL ALEJANDRO DE LA ROSA GOMEZ
Sebastian Serna Jimenez
Gracias por el aporte!
Andres Sanchez
Muchas gracias este aporte desatascó mi proceso
Jeinfferson Bernal G
Ruddy Ramos
Gracias por el aporte.
Neytan Brandon Benavides
Nicolas Cardenas Camelo
no me funciono :(
Pável Hernández Reza
Hola. Como lo escribí en la clase anterior (Y para los que no leyeron mi aporte y hasta ahora están necesitando ayuda), dejé un aporte en la primera clase donde les menciono que subí mi repositorio a GitHub para que lo puedan clonar y tomar el curso en VSCode ya con los problemas de las dependencias y errores de código de la librería MissingMethods. En el Readme podrán leer más acerca del contenido. Espero que les ayude:
Luis Cesar Guadarrama Jimenez
Gracias Pavel, eres un crack!!!
Alfonso Andres Zapata Guzman
missing_variable_summary() #metodo para obtener tabla con el conteo de datos faltantes en todas las columnas missing_variable_table() #metodo para obtener tabla agrupada por el conteo de datos faltantes en todas las columnas
Alfonso Andres Zapata Guzman
JUAN CAMILO AGUIRRE ROMERO
Una actualizadita a este curso valdría la pena. Usé todas las soluciones que dieron aquí, usé chat GPT y ninguna funcionó!!!
Luis Lozano
Si presente el mismo problema ya que los DataFrame no se cargan con el atributo de "missing"total_complete_values = riskfactors_df.count().sum() print(f"\nNúmero total de valores completos en el DataFrame: {total_complete_values}")
Esta funcion te podria servir
total_complete_values = riskfactors_df.count().sum() print(f"\nNúmero total de valores completos en el DataFrame: {total_complete_values}")
Yo lo puede resolver
Andres Felipe Vargas
El profesor es un crack y sabe mucho, pero que frustrante es que pase cosas sin actualizar y con fallas. Eso no debería pasar. @PlatziTeam, actualicen los CURSOSS!
Cristhian Nieto
Aparentemente, existe un error en el cálculo durante la verificación de valores faltantes por registro. Se estipula que cada registro consta de un total de 34 campos posibles, y nuestra tarea es determinar cuántos de estos campos se encuentran incompletos. Es decir, el porcentaje de valores faltantes por registro se calcula como la relación entre la cantidad de campos faltantes (n_faltantes) y el número total de campos (n_totales), que en este caso es 34. En el ejemplo de clase, se observa que uno de los registros presenta 6 campos incompletos. Esto representaría aproximadamente el 17.64% del total de campos disponibles (34 campos). Sin embargo, el ejercicio obtiene un valor del 16.66%, que no concuerda con el cálculo anterior. Es importante señalar que me podría encontrar en un error, agradecería que proporcionaran una explicación para entender la razón detrás del resultado observado en la clase. Propongo la siguiente corrección para calcular correctamente la relación entre la cantidad de campos faltantes (n_faltantes) y el número total de campos (n_totales):
david jurado
Me costó entender el funcionamiento de itertools.groupby, deberían explicar el funcionamiento detrás de esas funciones de la clase para entenderlo mejor...
Jefferson Berrones
y pensar que para ver los valores faltantes sólo hacía
base.info()
y ya me mostraba
Francisco Cisneros
Todo muy bien con el curso, realmente me gusta como va y como lo lleva el profesor pero ojalá la siguiente vez pueda usar un fondo oscuro en su deepnote. En lo personal sí me cuesta trabajar con fondo claro, me lastima un poco a la vista. Fuera de ello, por ahora, gran curso. Felicidades
Johnny Campiño
No he podido hacer el curso porque las extensiones a Pandas no me funcionan.
AttributeError: 'DataFrame' object has no attribute 'missing'
Dante Mazzini
Hola Johnny! eso es porque un notebook no soporta al otro en la definición de la clase missing. Lo que podes hacer, es traerte todo el código de los otros dos notebooks y meterlos en el principal y ejecutarlos, de esa manera no deberías de tener problema.
Oscar Piedrahita
Alguien sabe como arreglar este error ?
AttributeError: 'DataFrame' object has no attribute 'n_variables'
Oscar Piedrahita
Me sale cuando ejecuto este código
riskfactors_df.missing.missing_variable_table()
José Rodrigo Arana Hi
Daniela Betancur
al correr riskfactors_df.missing.missing_variable_table() tenia el error:
AttributeError: 'DataFrame' object has no attribute 'n_variables'
seguí las sugerencias de comentarios, pero no solucionaba nada.
lo logré con
def missing_variable_table(self) -> pd.DataFrame: n_rows = len(self._obj) missing_data = self._obj.isnull().sum() missing_percentage = (missing_data / n_rows) * 100 variable_summary = pd.DataFrame({ 'n_missing_in_variable': missing_data, 'pct_missing_in_variable': missing_percentage }) return variable_summary
Daniela Betancur
al correr riskfactors_df.missing.missing_variable_table() tenia el error:
AttributeError: 'DataFrame' object has no attribute 'n_variables'
seguí las sugerencias de comentarios, pero no solucionaba nada.
lo logré con
def missing_variable_table(self) -> pd.DataFrame:
n_rows = len(self._obj)
missing_data = self._obj.isnull().sum()
missing_percentage = (missing_data / n_rows) * 100
variable_summary = pd.DataFrame({
'n_missing_in_variable': missing_data,
'pct_missing_in_variable': missing_percentage
})
return variable_summary
Renato Sebastián Ramos Soto
me salvaste, muchas gracias.m Llevaba dos dias intentando arreglarlo!!
Roger Christian Cansaya Olazabal
riskfactors_df.missing.missing_variable_summary()
riskfactors_df.missing.missing_variable_table()
Andres Sanchez
6. Tabulación de valores faltantes
Empezar con resúmenes simples, como números.
Construir resúmenes por variables y observaciones
Salir de la caja y hacer más preguntas
Pablo Alejandro Figueroa
Me sucedió que al ejecutar los métodos de tabulación como:
df.missing.missing_variable_table() df.missing.missing_case_table()
Me devolvía un error porque no encontraba la variable "n_variables" . Esto ocurre porque en el método escrito de pandas-missing-extension, que es esta para missing_variable_table():
def missing_variable_table(self) -> pd.DataFrame: return ( self._obj.missing.missing_variable_summary() .value_counts("n_missing") .reset_index() .rename(columns={"n_missing": "n_missing_in_variable", 0: "n_variables"}) .assign( pct_variables=lambda df: df.n_variables / df.n_variables.sum() * 100 ) .sort_values("pct_variables", ascending=False) )
Durante value_counts, se genera una columna llamada "count" y no "0", entonces rename no consigue renombrarla a "n_variables" y en consecuencia assign no la encuentra. Para corregir esto desde la función reset_index se puede asignar name="n_variables" y eso sería más universal. Aquí estaría el código modificado para que se ejecute correctamente:
def missing_variable_table(self) -> pd.DataFrame: return ( self._obj.missing.missing_variable_summary() .value_counts("n_missing") .reset_index(name="n_variables") .rename(columns={"n_missing": "n_missing_in_variable"}) .assign( pct_variables=lambda df: df.n_variables / df.n_variables.sum() * 100 ) .sort_values("pct_variables", ascending=False) )
Es importante aclarar que el 3 de abril de 2023 se lanzó una nueva versión de la API de Pandas (la 2.0.0). Entonces algunas funciones del cuaderno de pandas-missing-extension generan errores.
Una solución rápida para este problema es asegurarse que se está ejecutando la versión 1.5.3 de Pandas o anteriores.
Si se está ejecutando el código en DeepNote, basta con ejecutar la instrucción:
!pip install pandas==1.5.3
antes de
import pandas
O si se está ejecutando el código desde un entorno local, basta con reinstalar el paquete de Pandas a la versión 1.5.3 desde el gestor de ambientes virtuales (venv, Anaconda, etc.)
Analisis de Valores Faltantes en el DataFrame riskfactors
riskfactors_df.isna()
riskfactors_df.shape --> (245, 34) #245 registros, 34 variables
En lo que sigue, utilizamos las funciones creadas para extender la funcionalidad de pandas
riskfactors_df.missing.number_complete() --> 7144
riskfactors_df.missing.number_missing() --> 1186
Resumenes Tabulares de Valores Faltantes
riskfactors_df.missing.missing_variable_summary() # missing_variable_summary() indica un resumen en cuanto a los datos # faltantes por variable. Muestra el N° de datos faltantes, el N° de registros # y el porcentaje de datos faltantes que representa en el dataframe
riskfactors_df.missing.missing_variable_table() # missing_variable_table() muestra una tabla con el N° de datos faltantes, # el N° de variables que contienen esos datos faltantes y el % que representa # esa cantidad de variables respecto al total
riskfactors_df.missing.missing_case_summary() # missing_case_summary() muestra todos los registros junto al N° de variables con datos # faltantes y el % de esas variables que representa respecto al total
riskfactors_df.missing.missing_case_table() # missing_case_table() muestra una tabla con el N° de datos faltantes, la cantidad # de registros que contienen ese N° de datos faltantes y e % de registros que # representan respecto al total de registros
Intervalos de Valores Faltantes
riskfactors_df.missing.missing_variable_span(variable='weight_lbs',span_every=50) # missing_variable_span() muestra el resumen de datos faltantes, datos completos, # % de datos faltantes y % de datos completos por bloques de registros
riskfactors_df.missing.missing_variable_run(variable='weight_lbs')
Para los que usan VSC con sus librerías y entornos bien configurados y les sale error con estas líneas de codigo:
<code> riskfactors_df.missing.missing_case_summary() riskfactors_df.missing.missing_case_table()
lo pude solucionar cambiando el codigo en "pandas-missing-extension" en las funciones de:
"missing_variable_table"
<code> def missing_variable_table(self) -> pd.DataFrame: return ( self._obj.missing.missing_variable_summary() .value_counts("n_missing") .reset_index() .rename(columns={"n_missing": "n_missing_in_variable", "count": "n_variables"}) .assign( pct_variables=lambda df: df.n_variables / df.n_variables.sum() * 100 ) .sort_values("pct_variables", ascending=False) )
Y en la funcion "missing_case_table"
<code> def missing_case_table(self) -> pd.DataFrame: return ( self._obj.missing.missing_case_summary() .value_counts("n_missing") .reset_index() .rename(columns={"n_missing": "n_missing_in_case", "count": "n_cases"}) .assign(pct_case=lambda df: df.n_cases / df.n_cases.sum() * 100) .sort_values("pct_case", ascending=False) )
Durante .value_counts, se genera una columna llamada “count” y no “0”, entonces sustituyendo se soluciona el problema.
missing_case_summary()
Tiene un detalle, y este es que presenta un cuasi doble indice, ya que case y el indice indican los mismos datos, por lo cual no se pero a mi no me mola, y lo arregle para que la variable 'case' fuera el indice:
def missing_case_summary1(a) -> pd.DataFrame: return a.assign( case=lambda df: df.index, n_missing=lambda df: df.apply( axis="columns", func=lambda row: row.isna().sum() ), pct_missing=lambda df: df["n_missing"] / df.shape[1] * 100, )[["case", "n_missing", "pct_missing"]].set_index('case') missing_case_summary1(riskfactors_df)
queda solo sustituir en su archivo con las clase con que extendimos pandas.
El error está en pandas-missing-extension. Busca la función "missing_variable_table". El error es que quiere renombrar la columna "0" pero no hay ninguna con ese nombre al momento de hacer la transformación del dataframe. El código debe ser el siguiente:
def missing_variable_table(self) -> pd.DataFrame: return ( self._obj.missing.missing_variable_summary() .value_counts("n_missing") .reset_index() .rename(columns={"n_missing": "n_missing_in_variable", "count": "n_variables"}) .assign( pct_variables=lambda df: df.n_variables / df.n_variables.sum() * 100 ) .sort_values("pct_variables", ascending=False) )