Is there any difference between np.Nan and np.nan? As per my understanding both are used for null values but if you look here
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame([[np.nan,2,np.nan,0],[3,4,np.nan,1],[np.nan,np.nan,np.nan,5]],columns=list('ABCD'))
print(df)
print(np.nan == np.NaN)
I get following output:
A B C D
0 NaN 2.0 NaN 0
1 3.0 4.0 NaN 1
2 NaN NaN NaN 5
False
Process finished with exit code 0
Now if these are same print(np.nan == np.NaN)
should return True
and why are the values in dataframe populated as NaN
?
I get NaN
is not a number so it might be treating it that way and hence changing the entry in dataframe but I am still not sure.
so basically
NaN
,NAN
and nan
are equivalent definitions of nan
or in other words
NaN
and NAN
are aliases of nan
np.nan
np.NaN
np.NAN
if you will check the equality of these it returns False
and if you check the types of all these 3 then you will find that all are of same type(float)
but let
a=np.NaN
b=np.NAN
c=np.nan
now if you will check the equality of a,b and c it returns True
(it won't work now)
Even in the documentation(line 4) it is said that:-
cannot use equality to test NaNs
you can check the documentation from here:-
https://numpy.org/doc/stable/user/misc.html?highlight=numpy%20nan