【数据分析】numpy中的nan和常用统计方法 No.5

一、nan和inf

1、 nan(NAN,Nan):not a number 表示不是一个数字

什么时候会出现nan呢?

       当我们读取本地文件为float的时候,如果有缺失或者当做了一个不合适的计算的时候,比如无穷大减去无穷大,就会出现nan。。

2、inf(-inf,inf):inf表示正无穷大,-inf表示负无穷大

什么时候会出现inf呢?

       数字除以0的操作,python中会报错,numpy中为inf或者-inf。

a = np.nan
print(a)
print(type(a))

b = np.inf

print(b)
print(type(b))

F:\Python\3.7\python.exe E:/PythonProject/Scripts/data_analysis.py

nan

<class 'float'>

inf

<class 'float'>

Process finished with exit code 0

二、nan的注意点

1、两个nan是不相等的(np.nan != np.nan)

print((np.nan == np.nan))
print((np.nan != np.nan))

False

True

2、判断数组中nan的个数(利用上述特性):

array1 = np.array([1.,2.,3., np.nan, np.nan])
print(np.count_nonzero((array1 == array1)))
print((array1 != array1))
print(np.count_nonzero(array1 != array1))

3

[False False False  True  True]

2

3、判断数字是否为nan:

array1 = np.array([1., 2., 3., np.nan, np.nan])
print(array1 == array1)
print(np.isnan(array1))

[ True  True  True False False]

[False False False  True  True]

4、替换所有nan为0:

array1 = np.array([1., 2., 3., np.nan, np.nan])
array1[np.isnan(array1)] = 0
print(array1)

[1. 2. 3. 0. 0.]

5、nan和其他值的计算均为nan

array1 = np.array([1., 2., 3., np.nan, np.nan])
print(array1+9)
print(array1*0)
print(np.nan-1)
print(sum(array1))

 

F:\Python\3.7\python.exe E:/PythonProject/Scripts/data_analysis.py

[10. 11. 12. nan nan]

[ 0.  0.  0. nan nan]

nan

nan

Process finished with exit code 0

三、常用统计方法

【数据分析】numpy中的nan和常用统计方法 No.5