Data Science N022 NaN - Not a Number (continuación)

By rafaelaquino on 2/16/2022

Cordiales Saludos

![portada2.png](Image from post)

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 ![portada2a.png](Image from post)

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 ![portada2b.png](Image from post)

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
portada3a.png portada3b.png

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 ![portada4.png](Image from post)

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)
portada5.png portada6.png

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 ![portada7.png](Image from post)

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 ![portada8.png](Image from post)
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 ![portada10.png](Image from post)
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 ![portada121.png](Image from post)

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!

![separador001.png](Image from post)
### Entrega anterior [ NaN - Not a Number](https://peakd.com/hive-154226/@rafaelaquino/data-science-n021-nan-not-a-number)
![separador001.png](Image from post)

Clases gratis de programación / Free programming classes

[ESP/ENG] Mi proyecto en Python/My project in Python.

Mi twitter separador001.png

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...](https://ko-fi.com/rafaelaquino) I will be very grateful! ![separador001.png](Image from post) Todos a programar! [Rafael Aquino](https://www.facebook.com/rafael.aquino.5815)

Comments (3)

poshtoken's avatar @poshtoken 2/16/2022

https://twitter.com/Rafa_elaquino/status/1493759873158303747 The rewards earned on this comment will go directly to the person sharing the post on Twitter as long as they are registered with @poshtoken. Sign up at https://hiveposh.com.

curie's avatar @curie 2/16/2022

Hi rafaelaquino,

https://hiveitimages.com/DQmXgrYG8AKimJKRSu2urPB5SPcftN6GCGx2gVJJMwBkuTu/Curie%20Logo%2075px.png
This post has been upvoted by the Curie community curation project and associated vote trail as exceptional content (human curated and reviewed). Have a great day :)

Join the Curie Discord community to learn more.

ecency's avatar @ecency 2/16/2022

Your content has been voted as a part of Encouragement program. Keep up the good work!

Use Ecency daily to boost your growth on platform!

Support Ecency
Vote for new Proposal
Delegate HP and earn more