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 :

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 :

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:
sns.displot(
preprocess_penguins_df.isna().melt(), y='variable', hue='value', multiple='fill', aspect=2
)
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!!
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 343
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
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
preprocess_penguins_df.dtypes
(
preprocess_penguins_df
.dtypes
.value_counts()
)
preprocess_penguins_df.shape
(
preprocess_penguins_df
.isnull()
.any()
)
(
preprocess_penguins_df
.isnull()
.sum()
)
(
preprocess_penguins_df
.isnull()
.sum()
.sum()
)
(
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 GroupBy
lambda df:(
sns.displot(
data=df,
y='variable',
hue='value',
multiple='fill',
aspect=2
)
)
)
)
(
preprocess_penguins_df
.isnull()
.transpose()
.pipe(
lambda df:(
sns.heatmap(
data=df
)
)
)
)
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.000000
island 0.000000
bill_length_mm 0.581395
bill_depth_mm 0.581395
flipper_length_mm 0.581395
body_mass_g 0.581395
sex 3.197674
year 0.000000
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:
def add_one(df):
return df + 1
def multiply_by_two(df):
return df * 2
result = df.pipe(add_one).pipe(multiply_by_two)
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:
A B
0 4 10
1 6 12
2 8 14
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.
FELIX DAVID CORDOVA GARCIA
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 :
Jesús Junior Alvarado Peña
Muchas gracias por el aporte! :)
Mauricio Escobar
Gracias carnal 👍 Soy tu fan
Daniel de Jesús Martínez Vega
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:
sns.displot( preprocess_penguins_df.isna().melt(), y='variable', hue='value', multiple='fill', aspect=2 )
Angelica Borda
gracias me sirvio!
Santiago Garzón
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!!
Robert Junior Buleje del Carpio
Sí, demasiada buena información resumida en un video.
Luis Aviles
Andrés Cardona
Con info()se responde todo
Juan R. Vergara M.
Gracias por el aporte.
Jeinfferson Bernal G
Ruddy Ramos
Muchas gracias por el aporte.
Juan José Mamani Tarqui
Excelente tus apuntes pero ubiera quedada mas si lo hubieras compleya con comentarios lo demas para tenerlo en cuentas
María José Medina
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.000000 island 0.000000 bill_length_mm 0.581395 bill_depth_mm 0.581395 flipper_length_mm 0.581395 body_mass_g 0.581395 sex 3.197674 year 0.000000
Javier Madriz
Bastante ingenioso
David Romero
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!!!
Roger Christian Cansaya Olazabal
Tremenda clase, muy util.
Luis Alejandro Nieto Ruth
escribiendo .T te trae la transpuesta de una matriz, en este caso el df se comporta como una
( pre_penguin_df .isnull() .T )
José Rodrigo Arana Hi
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:
def add_one(df): return df + 1 def multiply_by_two(df): return df * 2 result = df.pipe(add_one).pipe(multiply_by_two)
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:
A B 0 4 10 1 6 12 2 8 14
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.
Mauro Benito Montoya Arenas
El problema de deepnote es que muy lento en ocasiones.
Gabriel Obregón
RESUMEN
Dickinson Alexander Duran Ravelo
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( [True for idx,row in prepocess_penguins_df.iterrows() if any(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( [True for 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}')
Juan R. Vergara M.
Esta clase es muy útil 🥇
Jeinfferson Bernal G
x2
Pablo .
Otra manera de ver la existencia de valores nulos es mediante una gráfica con seaborn.
sns.heatmap(preprocess_penguins_df.isnull(), yticklabels=False, cbar=False, cmap="Blues");
Nelson Deiwer Baza Solares
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?
Eduard Giraldo Martínez
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
✨👾
Gabriel Obregón
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:
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:
Edwin Daniel Méndez Amaya
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.
Dennis Ricardo López Morell
Aquí mi repositorio de Git Hub 😺 de todo el curso:
Jose Potes
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.
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 343 Data columns (total 8 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 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
Validacion de Datos
preprocess_penguins_df.dtypes
( preprocess_penguins_df .dtypes .value_counts() )
preprocess_penguins_df.shape
( preprocess_penguins_df .isnull() .any() )
( preprocess_penguins_df .isnull() .sum() )
( preprocess_penguins_df .isnull() .sum() .sum() )
( 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 GroupBy lambda df:( sns.displot( data=df, y='variable', hue='value', multiple='fill', aspect=2 ) ) ) )
( preprocess_penguins_df .isnull() .transpose() .pipe( lambda df:( sns.heatmap( data=df ) ) ) )