Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Manejo de datos nulos

15/24
Recursos

Aportes 10

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Para borrar valores nulos de una columna en específico usamos el subset=[“Name_column”] dentro del dropna

Al asignar la media a los valores nulos, esta se obtiene por columna, no del dataset completo

df1.fillna(df1.mean())

Col1 Col2 Col3
0 1.0 5.0 a
1 2.0 NaN b
2 3.0 6.0 c
3 NaN 7.0 None

Col1 Col2 Col3
0 1.0 5.0 a
1 2.0 6.0 b
2 3.0 6.0 c
3 2.0 7.0 None

El método para reemplazar nulos de interpolación visto en clase es muy interesante. Tiene variados argumentos que la hacen muy poderosa.
Algunos son:
METHOD: método usado par interpolar. Por default es el linear. Pero existen otros:

  • Time: para interpolar entre intervalos de tiempo.
  • Index: reemplaza el nulo por el valor del index.
  • Pad: reemplaza el nulo por algún valor existente en el dataframe.
  • Se puede especificar que la interpolación sea cuadrática, cúbica , polinómica, entre otros.
  • Se puede especificar que se reemplace por el cero, o el valor contiguo más cercano, entre otros.

AXIS: tiene 3 opciones:

  • En dirección de los index (axis = 0).
  • En dirección de las columnas (axis = 1).
  • None: ninguna. Esta es la opción default.

LIMIT (opcional) : el número máximo de NULOS consecutivos que se pueden reemplazar. Tiene que ser mayor a cero.
LIMIT_DIRECTION (opcional): idem anterior pero en alguna dirección. Puede ser:

  • Forward: hacia adelante.
  • Backward: hacia atrás.
  • Both: ambos.

FUENTE : https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.interpolate.html

Manejo de valores nulos

  • Creamos un dataFrame con algunos valores nulos
import pandas as pd
import numpy as np

dict = {'Col1':[1,2,3,np.nan],
'Col2':[4, np.nan,6,7],
'Col3':['a','b','c', None]}

df = pd.DataFrame(dict)
	----> Col1 Col2 Col3
			0   1    4   a
			1   2   nan  b
			2   3    6   c
			3  nan   7  None
  • Identificar valores nulos en un dataFrame
df.isnull()
---->    Col1   Col2   Col3
			0 false   false  false
			1 false   true   false
			2 false   false  false
			3 true    false  true
  • Identificar valores nulos con un valor numerico
df.isnull()*1
---->    Col1   Col2   Col3
			0   0      0       0
			1   0      1       0
			2   0      0       0
			3   1      0       1
  • Sustituir los valores nulos por una cadena
df.fillna('Missing')
---->    Col1   Col2   Col3
	    0  1.0    4.0     a
			1  2.0  Missing   b
			2  3.0    6.0     c
			3 Missing 7.0  Missing		
  • Sustituir valores nulos por una medida estadisticas realizada con los valores de las columnas
df.fillna(df.mean())
---->    Col1   Col2   Col3
      0   1      4      a
			1   2      5.667  b
			2   3      6      c
			3   2      7     None	    		
  • Sustituir valores nulos por valores de interpolacion
df.interpolate()
---->    Col1   Col2   Col3
      0   1      4      a
			1   2      5      b
			2   3      6      c
			3   3      7     None	    		
  • Eliminar valores nulos
df.dropna()
---->    Col1   Col2   Col3
      0   1      4      a
			2   3      6      c
			  		

Retorna los row que tenga almenos 3 not-nan

df.dropna(thresh=3)

Esta clase me VOLO la cabeza. Es ideal para todos las pruebas técnicas que mandan para trabajos en DS. Ahora y más que nunca hasta el FINAL.

Hay que tener en cuenta que cuando se utiliza la función .dropna(), lo que hace es borrar aquellas filas que contienen un valor nulo.

Pero si solo se quiere tener en cuenta los valores nulos de una columna hay que pasarle el nombre de la columna .dropna(subset=[“Columna”])

De todas manera como parte de un departamento de datos, no es solo borrar hay que analizar la información, verificarla y ver el posible impacto de eliminar datos, en mi opinión es mejor buscar una solución de llenado, dado de si son muchos es mejor buscar el origen y corregirlo

Para trabajar con decimales ( definidos a nuestras necesidades) es buena idea agregar esta linea de código al inicio de nuestro .ipynb

De acuerdo a la documentación de pandas, estas son algunas ( no se si todas) las opciones disponibles.

https://pandas.pydata.org/pandas-docs/stable/user_guide/options.html