Trabajar con datos NaN en dataframe
abril 03, 2015
Trabajar con datos NaN en dataframe¶
Se crea un dataframe con datos vacíos para generar los NaN, en este caso se agregan datos tipo None a la lista, que es el equivalente a leer un archivo de Excel o de un csv en los que faltan valores.
import pandas as pd
df = pd.DataFrame({'a':[None, 3, None, 5, 6], 'b':[1, 3, 4, 6, None], 'c':[54, None, None, 32, 21]})
print df
Reconocer los valores NaN¶
Con este comando devuelve una tabla booleana con True si el valor es un NaN o False si no lo es.
df_bool = pd.isnull(df)
print df_bool
Eliminar todos los NaN del dataframe¶
Este comando elimina todas las filas que contengan un valor NaN
df_sin_nan = df.dropna(how='any')
print df_sin_nan
Rellenar NaN del dataframe¶
Asignando un valor¶
Es posible dar un valor específico a los NaN. En la siguiente línea se reemplazan todos los NaN por 3
df_nuevo = df.fillna(value=3)
print df_nuevo
Reemplazar los NaN con el valor promedio de cada columna:
df_nuevo = df.fillna(df.mean())
print df_nuevo
Con los valores vecinos¶
Reemplazar los NaN con el valor anterior o posterior del NaN: 'pad' para reemplazarlo con el valor anterior y 'bfill' con el posterior. Se reemplazan todos los NaN, pero se puede establecer un límite según la distancia de este con el último dato del dataframe. Esta distancia se especifica en limit:
df_nuevo = df.fillna(method='bfill', limit=1)
print df_nuevo
Sin el límite:
df_nuevo = df.fillna(method='pad')
print df, '\n'
print df_nuevo
Interpolando¶
Para reemplazar los NaN interpolando con el resto de datos conocidos se usa la función interpolate:
df_inter = df.interpolate(method='linear')
print df_inter
Otros métodos de interpolación
method : ‘linear’, ‘time’, ‘index’, ‘values’, ‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘barycentric’, ‘krogh’, ‘polynomial’, ‘spline’ ‘piecewise_polynomial’, ‘pchip’.
0 comments