如何一分钟内找出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中pywin32库实现Windows自动化与系统交互

    深入理解Python中pywin32库实现Windows自动化与系统交互

    pywin32是一个让 Python 能够直接调用 Windows API 和 COM 对象的扩展库,本文将带大家从入门到精通,系统性地理解 pywin32 的核心功能、内部机制、典型应用场景和高级用法
    2025-10-10
  • python requests完成接口文件上传的案例

    python requests完成接口文件上传的案例

    这篇文章主要介绍了python requests完成接口文件上传的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 用python 绘制茎叶图和复合饼图

    用python 绘制茎叶图和复合饼图

    这篇文章主要介绍了用python 绘制茎叶图和复合饼图,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02
  • Python单例模式的两种实现方法

    Python单例模式的两种实现方法

    这篇文章主要介绍了Python单例模式的相关资料,这里提供了两种实现方法,及注意事项,需要的朋友可以参考下
    2017-08-08
  • 利用python实现微信头像加红色数字功能

    利用python实现微信头像加红色数字功能

    通过Python实现将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。下面通过本文给大家分享python实现微信头像加红色数字功能,感兴趣的朋友一起看看吧
    2018-03-03
  • Python桌面文件清理脚本分享

    Python桌面文件清理脚本分享

    这篇文章主要介绍了Python桌面文件清理脚本,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 解决Python在导入文件时的FileNotFoundError问题

    解决Python在导入文件时的FileNotFoundError问题

    这篇文章主要介绍了解决Python在导入文件时的FileNotFoundError问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python3中函数参数传递方式实例详解

    Python3中函数参数传递方式实例详解

    这篇文章主要介绍了Python3中函数参数传递方式,结合实例形式较为详细的分析了Python3中函数参数传递的常见操作技巧,需要的朋友可以参考下
    2019-05-05
  • Django 路由控制的实现代码

    Django 路由控制的实现代码

    这篇文章主要介绍了Django 路由控制的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • python中如何进行连乘计算

    python中如何进行连乘计算

    在本篇文章里小编给大家分享的是关于python连乘计算的代码,有兴趣的朋友们可以参考学习下。
    2020-05-05

最新评论