如何一分钟内找出pandas DataFrame某列中的nan值

 更新时间:2023年09月12日 14:42:31   作者:六个橙子_lc  
这篇文章主要介绍了如何一分钟内找出pandas DataFrame某列中的nan值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一分钟内找出pandas DataFrame某列中的nan值

例如

对格式为DataFrame的变量element,找出其中TEM列里所有的nan值

element=read_element(TRHCLO_data_path,end_trans,sta_info)

步骤一

element_right=element[~(np.isnan(element["TEM"]))] #(element["TEM"]).isna()
element_nan=(element[np.isnan(element["TEM"])])

此时程序报错:

ufunc ‘isnan’ not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ‘‘safe’’

步骤二

对查询列(TEM列)的数据类型进行一次标准处理即可

element["TEM"]=(element["TEM"]).astype(float)  #对下面的np.isnan查询很必要,否则会报格式错误
element_right=element[~(np.isnan(element["TEM"]))] 
element_nan=(element[np.isnan(element["TEM"])])

dataframe缺失值(NaN)处理

在进行机器学习的特征工程时,常常需要根据选择的机器学习算法,采用合适的数据预处理方式,特别是对于对于空值(NaN)的处理,常常使人感到困惑。

一般对于NaN,常常有两种处理方式。

  • 第一种——填补
  • 第二种——不处理

当你使用sklearn库进行机器学习训练时,一般对于缺失值要求较为严格,因此,需要进行填补,至于填补为何值,则需要根据业务需求进行。

当你使用lightgbm库一类库进行机器学习训练时,一般不需要处理缺失值,因为这类算法,天然支持缺失值处理,它会将缺失值单独分为一类。

本人认为,数据的缺失,在实际中是存在一定的业务含义的,例如月收入的缺失,就反应人对于自己收入的不自信,因此在风控领域就存在更容易逾期现象。但此时若是进行均值的缺失值填补,则会使该业务含义消失,因此我觉得是不可取的。

数据的特征工程决定数据质量,数据质量决定模型效果上限,模型参数决定训练的模型能否逼近理论模型,特征工程的难易复杂程度决定模型最终上线的工作量。

(以上为本人的一点点见解)

判断缺失值的函数有:np.isnan()/ pd.isna()/pd.isnull()。

  • np.isnan():一般用于单个值,也可以用于Series或者DataFrame,但是这里存在一个坑,np.isnan()判断datetime类型的Series或者DataFrame会报错。
  • pd.isna()和pd.isnull():用的比较多,一般推荐使用pd.isna()
s1 = pd.Series([1,2,3,np.nan])
np.isnan(s1)
>>> 0    False
	1    False
	2    False
	3     True
	dtype: bool
pd.isna(s1)
>>> 0    False
	1    False
	2    False
	3     True
	dtype: bool
pd.isnull(s1)
>>> 0    False
	1    False
	2    False
	3     True
	dtype: bool

除了以上的方法之外,还有一种较为方便和万能的方法来判断缺失值,取出非缺失值进行处理(本人一般也采用这种方法)。    

通过对np.nan==np.nan发现,np.nan是不会等于np.nan,因此我们可以通过以下方式取出非缺失值。

np.nan==np.nan
>>> False
s1 = pd.Series([1,2,3,np.nan])
s1==s1
>>> 0     True
    1     True
    2     True
    3    False
    dtype: bool
#获取非缺失值
s1[s1==s1]
>>> 0    1.0
    1    2.0
    2    3.0
    dtype: float64
#获取非缺失值的数量
len(s1[s1==s1])
>>>3
#对缺失值进行填补(除了fillna外的方式)
s1[~(s1==s1)]=0
s1
>>> 0    1.0
    1    2.0
    2    3.0
    3    0.0
    dtype: float64

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • Python实现弹球小游戏的示例代码

    Python实现弹球小游戏的示例代码

    这篇文章主要为大家详细介绍了Python如何实现简单的弹球小游戏,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2022-11-11
  • Python实现简单拆分PDF文件的方法

    Python实现简单拆分PDF文件的方法

    这篇文章主要介绍了Python实现简单拆分PDF文件的方法,可实现将一个PDF文件拆分成指定份数的功能,涉及pyPdf模块的使用技巧,需要的朋友可以参考下
    2015-07-07
  • 8行代码实现Python文件去重

    8行代码实现Python文件去重

    本文主要介绍了Python文件去重,所以就想使用Python自动化解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 解决Keras 自定义层时遇到版本的问题

    解决Keras 自定义层时遇到版本的问题

    这篇文章主要介绍了解决Keras 自定义层时遇到版本的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python真题案例之二分法查找详解

    Python真题案例之二分法查找详解

    这篇文章主要介绍了python实操案例练习,本文给大家分享的案例中主要讲解了二分法查找,需要的小伙伴可以参考一下
    2022-03-03
  • Python缺少库IPython的解决办法步骤

    Python缺少库IPython的解决办法步骤

    在使用Python编写程序过程中,有时我们会遇到一些错误信息,提示我们当前环境缺少某些依赖库文件,这篇文章主要给大家介绍了关于Python缺少库IPython的解决办法步骤,需要的朋友可以参考下
    2023-12-12
  • Python unittest单元测试框架总结

    Python unittest单元测试框架总结

    这篇文章主要介绍了Python unittest单元测试框架总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Python and、or以及and-or语法总结

    Python and、or以及and-or语法总结

    这篇文章主要介绍了Python and、or以及and-or语法总结,本文分别给出实例讲解它们的使用方法,需要的朋友可以参考下
    2015-04-04
  • pandas实现选取特定索引的行

    pandas实现选取特定索引的行

    下面小编就为大家分享一篇pandas实现选取特定索引的行,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python中三元表达式的几种写法介绍

    Python中三元表达式的几种写法介绍

    今天小编就为大家分享一篇关于Python中三元表达式的几种写法介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论