pandas处理丢失数据
import pandas as pd
import numpy as np
dates=pd.date_range('20180101',periods=4)
df=pd.DataFrame(np.arange(16).reshape((4,4)),index=dates,columns=['A','B','C','D'])
df.iloc[0,1]=np.nan
df.iloc[1,2]=np.nan
print(df)
输出:
A B C D
2018-01-01 0 NaN 2.0 3
2018-01-02 4 5.0 NaN 7
2018-01-03 8 9.0 10.0 11
2018-01-04 12 13.0 14.0 15
(1)pd.dropna():直接去掉带有缺失值的行和列
df.dropna(axis=0,how='any') #axis=0对行进行操作,1对列进行操作;‘any’只要存在NaN就drop,‘all’表示全部是NaN则drop
输出:
A B C D
2018-01-03 8 9.0 10.0 11
2018-01-04 12 13.0 14.0 15
(2)pd.fillna():用其他值代替
df.fillna(value=0)
输出:
A B C D
2018-01-01 0 0.0 2.0 3
2018-01-02 4 5.0 0.0 7
2018-01-03 8 9.0 10.0 11
2018-01-04 12 13.0 14.0 15
(3)pd.isnull():判断是否为空
df.isnull()
输出:
A B C D
2018-01-01 False True False False
2018-01-02 False False True False
2018-01-03 False False False False
2018-01-04 False False False False
判断是否有NaN:
np.any(df.isnull())==True
输出
True