小编给大家分享一下python出现nan的解决方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨方法吧!

很多数据不可避免的会遗失掉,或者采集的时候采集对象不愿意透露,这就造成了很多NaN(Not a Number)的出现。这些NaN会造成大部分模型运行出错,所以对NaN的处理很有必要。

解决方法:

1、简单粗暴地去掉

1)有如下dataframe,先用df.isnull().sum()检查下哪一列有多少NaN:

importpandasaspddf=pd.DataFrame({'a':[None,1,2,3],'b':[4,None,None,6],'c':[1,2,1,2],'d':[7,7,9,2]})print(df)print(df.isnull().sum())

输出:

2)将含有NaN的列(columns)去掉:

data_without_NaN=df.dropna(axis=1)print(data_without_NaN)

输出:

2、遗失值插补法

很多时候直接删掉列会损失很多有价值的数据,不利于模型的训练。

所以可以考虑将NaN替换成某些数,显然不能随随便便替换,有人喜欢替换成0,往往会画蛇添足。

譬如调查工资收入与学历高低的关系,有的人不想透露工资水平,但如果给这些NaN设置为0很显然会失真。所以Python有个Imputation(插补)的方法。代码如下:

fromsklearn.preprocessingimportImputermy_imputer=Imputer()data_imputed=my_imputer.fit_transform(df)print(type(data_imputed))#array转换成dfdf_data_imputed=pd.DataFrame(data_imputed,columns=df.columns)print(df_data_imputed)

输出:

可以看出,这里大概是用平均值进行了替换。


看完了这篇文章,相信你对python出现nan的解决方法有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!