1.构造DataFrame(部分含有NaN)
有时候我们导入或处理数据, 会产生一些空的或者是 NaN 数据,如何删除或者是填补这些 NaN 数据就是我们今天所要提到的内容
import numpy as np
import pandas as pd
dates = pd.date_range('20200316',periods = 5)
df = pd.DataFrame(np.arange(30).reshape((5,6)), index = dates, columns = ['A','B','C','D','E','F'])
df.iloc[2,1] = np.nan
df.iloc[3,4] = np.nan
print(df)
#输出
A B C D E F
2020-03-16 0 1.0 2 3 4.0 5
2020-03-17 6 7.0 8 9 10.0 11
2020-03-18 12 NaN 14 15 16.0 17
2020-03-19 18 19.0 20 21 NaN 23
2020-03-20 24 25.0 26 27 28.0 29
2.用dropna()删除含有NaN的行或列
如果想直接去掉有 NaN 的行或列, 可以使用 dropna
t = df.dropna(axis = 0,how = 'any') # 0: 对行进行操作; 1: 对列进行操作 any': 只要存在 NaN 就 drop 掉; 'all': 必须全部是 NaN 才 drop
print(t)
#输出
A B C D E F
2020-03-16 0 1.0 2 3 4.0 5
2020-03-17 6 7.0 8 9 10.0 11
2020-03-20 24 25.0 26 27 28.0 29
3.用fillna()替换NaN
v = df.fillna(0) #用0替换含有NaN的值
print(v)
#输出
A B C D E F
2020-03-16 0 1.0 2 3 4.0 5
2020-03-17 6 7.0 8 9 10.0 11
2020-03-18 12 0.0 14 15 16.0 17
2020-03-19 18 19.0 20 21 0.0 23
2020-03-20 24 25.0 26 27 28.0 29
4.用isnull()判断是否含有NaN
判断是否有缺失数据 NaN, 为 True 表示缺失数据
w = df.isnull()
print(w)
#输出
A B C D E F
2020-03-16 False False False False False False
2020-03-17 False False False False False False
2020-03-18 False True False False False False
2020-03-19 False False False False True False
2020-03-20 False False False False False False
检测在数据中是否存在 NaN, 如果存在就返回 True:
print(np.any(df.isnull() == True))
#输出
True