Creé un marco de datos de una sola columna lleno de np.nan de la siguiente manera:

df=pd.DataFrame([np.nan]*5)

    0
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN

Cuando intento buscar el tipo de datos de df.iloc[0,0], es decir, NaN, el valor devuelve numpy.float64

Sé que la función pd.isnull podría devolver verdadero correctamente para estos np.NaN. Sin embargo, no entiendo por qué el tipo de datos es flotante.

2
user7786493 21 feb. 2018 a las 15:51

2 respuestas

La mejor respuesta

NaN en matrices numéricas

>>> a = float('inf')
>>> b = float('-inf')
>>> c = float('nan')
>>> a
inf
>>> b
-inf
>>> c
nan

Los valores de NaN se propagan a través de todas las operaciones sin generar una excepción. Por ejemplo:

>>> c = float('nan')
>>> c + 23
nan
>>> c / 2
nan
>>> c * 2
nan
>>> math.sqrt(c)
nan
>>>

Si es de tipo flotante, ayuda a Python durante el cálculo.

1
CezarySzulc 21 feb. 2018 a las 13:00

NumPy (np) usa IEEE Standard para Binary Floating-Point para cálculos aritméticos (IEEE 754). Es por eso que cuando haces cualquier tipo de manipulación con NumPy, devolverá Float

>>> type(np.nan*5)
<class 'float'>
1
Ashish Kumar 21 feb. 2018 a las 13:05