Hola, si desean saber cuales son las filas con valores nulos y en que columnas se encuentran pueden usar el siguiente código:
Hallamos cuales son las filas con al menos un valor nulo
Visualizamos las filas con al menos un valor nulo :
Muchas gracias por el aporte! :)
Gracias carnal 👍 Soy tu fan
Para quienes no sabiamos de la existencia de .pipe(), lo que hace es Aplicar la función entre paréntesis a mi df, acá se usó para no asignar todo el proceso anterior a una variable, pero podemos tener el mismo resultado si utilizamos el siguiente código para hacer la gráfica de la proporción de valores nulos por variable:
Pensé que solo iba a aprender de validación de datos y terminé aumentando como por x10 mis conocimientos en manejo de pandas y python
Este curso está muy bueno!!
Sí, demasiada buena información resumida en un video.
Un método de la librería pandes que nos suele dar mucha información del dataframe es info(), la cual si la aplicamos a nuestro conjunto de datos de pingüinos nos daría el siguiente resultado:
RangeIndex:344 entries,0 to 343Datacolumns(total 8 columns): # ColumnNon-NullCountDtype----------------------------0 species 344 non-null object
1 island 344 non-null object
2 bill_length_mm 342 non-null float64
3 bill_depth_mm 342 non-null float64
4 flipper_length_mm 342 non-null float64
5 body_mass_g 342 non-null float64
6 sex 333 non-null object
7 year 344 non-null int64
dtypes:float64(4),int64(1),object(3)memory usage:21.6+KB
Con info()se responde todo
Gracias por el aporte.
Validacion de Datos
dtypes muestra el tipo de dato de cada variable
preprocess_penguins_df.dtypes
Forma alternativa de presentar el codigo de manera lineal
( preprocess_penguins_df
.dtypes
.value_counts())
shape muestra el tamaño del dataset
preprocess_penguins_df.shape
isnull() asigna True para celdas donde hay valores nulos y False donde no los hay. any() permite resumir toda la informacion en una tabla
( preprocess_penguins_df
.isnull().any())
sum() suma todos los valores de una variable dada. En este caso permite mostrar la cantidad de valores nulos por cada variable
( preprocess_penguins_df
.isnull().sum())
Para contar todos los valores nulos que existen en la tabla se agrega la funcion sum nuevamente.
( preprocess_penguins_df
.isnull().sum().sum())
Para mostrar la proporcion de valores nulos que existen en una tabla, utilizamos la libreria seaborn para verlo de manera grafica
( preprocess_penguins_df
.isnull().melt()#convierte el dataframe en un formato de solo dos identificadores columna 'variable', 'valor'.pipe(# encadena funciones que esperan objetos de tipo Series, DataFrame o GroupBylambda df:( sns.displot( data=df, y='variable', hue='value', multiple='fill', aspect=2))))
Para los valores nulos en todo el conjunto de datos utilizamos un mapa de calor de la libreria seaborn
Excelente tus apuntes pero ubiera quedada mas si lo hubieras compleya con comentarios lo demas para tenerlo en cuentas
Para explorar valores nulos algo práctico que hago es calcular su porcentaje
# % of NaN Values(df.isna().sum()/ df.shape[0])*100# result: species 0.000000island 0.000000bill_length_mm 0.581395bill_depth_mm 0.581395flipper_length_mm 0.581395body_mass_g 0.581395sex 3.197674year 0.000000
Bastante ingenioso
Por fin un curso de EDA donde no se hacen análisis de forma básica como en la mayoría de otros cursos en otras plataformas. Esto es oro puro!!!
Tremenda clase, muy util.
escribiendo .T te trae la transpuesta de una matriz, en este caso el df se comporta como una
( pre_penguin_df
.isnull().T)
In Pandas, the pipe() function is used to chain custom functions together in a single expression.
The pipe() function allows you to apply a sequence of custom functions to a DataFrame or Series, where the output of one function is used as the input to the next function. This can make your code more concise and easier to read, especially when you need to perform multiple operations on the same DataFrame or Series.
Here's a simple example that demonstrates how the pipe() function works. Suppose you have the following DataFrame:
import pandas as pd
import numpy as np
data ={'A':[1,2,3],'B':[4,5,6]}df = pd.DataFrame(data)
You can use the pipe() function to apply a sequence of custom functions to this DataFrame, like this:
In this example, we define two custom functions (add_one() and multiply_by_two()) that modify a DataFrame in some way. We then call the pipe() function twice, passing in each custom function as an argument. The pipe() function then applies these functions to the DataFrame in sequence, with the output of one function becoming the input to the next function.
In the end, the result variable will contain the following DataFrame:
AB041016122814
This DataFrame is the result of first adding one to each element of the original DataFrame, and then multiplying each element by two.
Note that the pipe() function is optional and not always necessary. You can also apply multiple functions to a DataFrame using method chaining or by passing the output of one function as the input to the next function directly. However, the pipe() function can make your code more readable and easier to maintain in some cases.
El problema de deepnote es que muy lento en ocasiones.
RESUMEN
¿Qué tipo de datos son las variables del conjunto de datos?
Código: preprocess_penguins_df.dtypes
Explicación: Este comando muestra los tipos de datos de todas las columnas del conjunto de datos. Se indican los tipos de cada variable (por ejemplo, object, float64, int64).
¿Cuántas variables de cada tipo de dato tenemos en el conjunto de datos?
Explicación: Este comando cuenta las ocurrencias de cada tipo de dato en el conjunto de datos, ayudando a identificar su estructura.
¿Cuántas variables y observaciones tenemos en el conjunto de datos?
Código: preprocess_penguins_df.shape
Explicación: Este comando muestra el número de filas y columnas en el conjunto de datos. Las filas representan observaciones y las columnas, variables.
¿Existen valores nulos explícitos en el conjunto de datos?
Código: preprocess_penguins_df.isnull().any()
Explicación: Este comando verifica valores faltantes (nulos) en cada columna, devolviendo True si existen valores nulos y False en caso contrario.
De tener observaciones con valores nulos, ¿cuántas tenemos por cada variable?
Código: preprocess_penguins_df.isnull().sum()
Explicación: Este comando calcula el número total de valores nulos por columna.
¿Cuántos valores nulos tenemos en total en el conjunto de datos?
Explicación: Este comando calcula el número total de valores nulos en todo el conjunto de datos.
¿Cuál es la proporción de valores nulos por cada variable?
Código: Se crea una visualización utilizando countplot de seaborn o matplotlib.
Explicación: Un gráfico de barras muestra la proporción de valores nulos y no nulos en cada columna.
¿Cómo podemos visualizar los valores nulos en todo el conjunto de datos?
Código: Un heatmap (e.g., usando sns.heatmap() de seaborn).
Explicación: El heatmap resalta los valores nulos en el conjunto de datos para comprender mejor su distribución.
¿Cuántas observaciones perdemos si eliminamos los datos faltantes?
Código:
preprocess_penguins_df.shape
preprocess_penguins_df.dropna().shape
Explicación: El primer comando muestra el tamaño actual del conjunto de datos, y el segundo muestra el tamaño tras eliminar las filas con valores nulos. La diferencia indica las observaciones perdidas.
Para saber el conteo total de filas, total de campos nulos, total de filas con algun campo nulo y ademas, cuantas filas quedarian luego de borrar los campos nulos puedes usar el siguiente codigo
null_fields =sum( prepocess_penguins_df
.isnull().values.ravel()) # con esto podemos contar el total de campos nulos
null_rows =sum([Truefor idx,row in prepocess_penguins_df.iterrows()ifany(row.isnull())] # esta list comprehension te permite valida por cada fila y columna si existe o no un campo nulo y lo cuenta mediente un condicional
)total_rows =sum([Truefor idx,row in prepocess_penguins_df.iterrows()])print(f'Numero de campos nulos: {null_fields} \nNumero de filas que tengan al menos 1 campo nulo: {null_rows} \nTotal de filas: {total_rows} \nCantidad total despues de borrar las filas con campos nulos: {total_rows - null_rows}')
Esta clase es muy útil 🥇
x2
Otra manera de ver la existencia de valores nulos es mediante una gráfica con seaborn.
Hola, ¿Hasta que proporción, cantidad o porcentaje de datos nulos es valido eliminar sin afectar significativamente la población general de datos o generar un sesgo?
Hola, Nelson 😀
Cómo el profesor Jesús en 8:50, en este caso no representa una gran cantidad y no afecta a nuestro análisis. Eso dependerá de lo que quieras analizar, no tengo la respuesta a tu pregunta, pero tal vez puedas solucionar esa duda en uno de estos 2 cursos de datos faltantes = Exploración o el curso de Datos Faltantes: Imputación
Espero te sirve aunque sea un poco. Yo también tengo la misma duda
✨👾
EXPLORACIÓN INICIAL DE UN CONJUNTO DE DATOS: PREGUNTAS CLAVE
Cuando se comienza a trabajar con un conjunto de datos desconocido, es importante responder una serie de preguntas fundamentales para comprender su estructura y calidad. Estas preguntas incluyen:
¿Cuántas variables hay?
Determina la cantidad total de variables presentes en el conjunto de datos.
¿De qué tipos son las variables?
Identifica si las variables son categóricas, numéricas, de texto, etc.
¿Existen valores nulos?
Verifica si hay datos faltantes dentro del conjunto de datos.
¿Qué proporción representan los valores nulos?
Evalúa si los valores nulos son significativos en relación con el tamaño total del conjunto de datos.
¿Son muchos o pocos? Analiza si la cantidad de datos faltantes afecta el análisis general.
¿Cómo están distribuidos los valores nulos?
Examina si los valores nulos provienen de una sola observación específica o si están distribuidos en diferentes partes del conjunto de datos, como ocurre, por ejemplo, con un grupo completo de observaciones (en este caso, todos los datos de pingüinos).
Objetivo de estas preguntas
Responder a estas preguntas iniciales te ayuda a formar una idea general sobre el estado de los datos. Esto es fundamental para decidir cómo proceder con el análisis y qué técnicas aplicar.
EXPLORACIÓN FUTURA DE LAS VARIABLES
En clases posteriores, aprenderás a analizar las variables desde diferentes perspectivas:
Análisis de una sola variable: Examinar las características individuales de cada variable.
Análisis de dos variables: Explorar relaciones entre pares de variables.
Análisis de múltiples variables: Estudiar interacciones más complejas entre varias variables.
En pandas, los métodos isnull() e isna(), no tienen ninguna diferencia, ambos métodos hacen lo mismo, retornan un booleano que indica si algún valor es nulo.
Aquí mi repositorio de Git Hub 😺 de todo el curso:
Hola, si no entendiste el grafico de 8:50.
Este grafico busca demostrarte en que parte del dataset no se tiene informacion.
en el eje Y, tienes las variables= columnas.
si vas a la tabla original y buscas el rango por ejemplo de 1 a 8 vas a ver que hay de 1 a 8 una observacion = fila que no tiene informacion.
entonces:
vamos con un ejemplo.
digamos que quieres saber a que se refiere la 4ta linea en el heatmap.
entonces, identificas el numero:
176, ve a la tabla original y mira en el 176 a que observacion se refiere:
aqui encontré la observacion(fila)
preprocess_penguins_df.iloc[178]
con iloc puedo buscar una fila en especifico
species Gentoo
island Biscoe
bill_length_mm 44.5
bill_depth_mm 14.3
flipper_length_mm 216.0
body_mass_g 4100.0
sex NaN
year 2007
Name: 178, dtype: object
y segun el heat map:
el numero 176(en el dataset 178).
la informacion restante es SEX.
y si, es cierto, mira que en el dataset lo que está en null es el sexo.
si hubiera mas
es sin duda un hermoso grafico, un poquitico complejo para entender a primeras.
pero dale, tu puedes variables en null pues entonces esa linea sería mas larga.