Cordiales Saludos

Continuaremos con el tema tratado en la publicación anterior: NaN - Not a Number. Trabajaremos con un archivo .CSV creado por mi. Ver Capture de Pantalla N01, en el cual coloqué toda la última columna con NaN al igual que la 4ta fila.
Capture de Pantalla N01

Iniciaremos, como siempre, llamando a la libraría pandas y luego cargaremos la información del .csv por medio de un Data Frame (Ver Capture de Pantalla N02)
Capture de Pantalla N02

Uso de .isnull() / .isna()
Con .isnull() e .isna() podemos ver los valores NaN, si existen, con un valor booleano. En este caso True para todos los que se consigan dentro de nuetro Data Frame. Ver Capture de Pantalla N03 y N04 donde podemos apreciar mejor.
.
Capture de pantalla N03 | Capture de pantalla N04 |
---|---|
![]() | ![]() |
Uso de .notna()
Con respecto a .notna() nos arroja un booleano pero con el valor contrario a .isnull() e .isna(). Ver Capture de pantalla N05.
Cual utilizar, depende! En programación siempre debemos tener (y siempre hay) diferentes funciones, métodos o estructuras para atacar un problema. Ahora dependerá de como estemos atacando el problema determinar si nos conviende el uso del Valor True o False. Por ahora estamos usando estructuras básicas y estamos trabajando con datos reducidos (para ejemplificar) pero más adelante trabajaremos con cientos o miles de datos, como ya lo he mencionado en publicaciones anteriores.
Capture de pantalla N05

Eliminar toda una columna con valor NaN
Con la siguiente instrucción, podemos eliminar toda la Columna con valor NaN
df_sin_nan_columna = df.dropna(axis = 1,how = 'all')
df_sin_nan_columna
Y con la siguiente instrucción, podemos eliminar toda la fila con valor NaN.
df_sin_nan_fila = df_sin_nan_columna.dropna(axis = 0)
df_sin_nan_fila
Es importante que cuando trabajemos con la eliminación de la fila, debemos aplicarle el .dropna() a la columna que ya limpiamos. Se observa mejor comparando los dos casos (columnas y filas) en los captures de pantalla N06 y N07.
.
Capture de pantalla N06 (columna) | Capture de pantalla N07 (fila) |
---|---|
![]() | ![]() |
Remplazar NaN por un Valor
En determinado momento necesitamos cambiar el valor NaN por un valor (en este caso lo cambié por cero, podemos usar otro valor que nos convenga) y también (lo veremos más adelante) podemos cambiar el valor NaN por el promedio de los demas valores de una columna (o por otra operación matemática), suponiendo que solo hay uno o pocos NaN dentro de una columna.
Para hacer este ejercicios llamamos nuevamenmte nuestros datos originaeles. Ver Capture de pantalla N08
Capture de pantalla N08

Cambiar todos a cero
Para este cambio al valor cero de todos los NaN usaremos .fillna(). Podemos usar otro número de acuerdo a nuestra conveniencia. Ver Capture de pantalla N09
Capture de pantalla N09

Cambiar a cero toda una columna
Llamenos nuevamente nuestros datos
df2 = pd.read_csv('ejemplo_para_NaN.csv',index_col = 'Numero')
df2
Y con la instrucciónn
df2.l5 = df2.l5.fillna(0)
df2
Podemos cambiar a cero toda la columna L5. Ver Capture de pantalla N10
Capture de pantalla N10

Cambiar a cero toda una Fila
Llamenos nuevamente nuestros datos
df2 = pd.read_csv('ejemplo_para_NaN.csv',index_col = 'Numero')
df2
Y con la instrucciónn
df2.loc[40] = df2.loc[40].fillna(0)
df2
Podemos cambiar a cero toda la fila identificada con el Número 40. Ver Capture de pantalla N11
Capture de pantalla N11

Hasta aquí nuestros ejercicios con respecto a NaN para consolidar lo aprendido en la publicación anterior y aprender nuevas instrucciones que siempre usaremos para la limpieza de datos. Podemos ver el Cuaderno completo con los ejercicios de hoy en mi repositorio de Github
Para quienes terminaron el Curso Gratis de Programación con python y para todos los interesados, ordené todas las publicaciones dedicadas a Data Science realizadas aquí en @hive, en una página web, para que tengan fácil acceso a cada entrada. La dirección es Python Cumanés (Data Science) y aquí la dirección de pythoncumanes
Una vez más los invito a practicar, practicar, practicar... Hasta la próxima entrega, Feliz Día!

Entrega anterior

Clases gratis de programación / Free programming classes
[ESP/ENG] Mi proyecto en Python/My project in Python.
I started a Ko-fi Page! Ko-fi helps creators get support from fans of their work. Please support or follow my page! If you like what I do and feel in tune with my work in creating content for free programming courses and chess publications without any profit interest. Give me a coffee... I will be very grateful!
Todos a programar!
Rafael Aquino