pandas如何将dataframe中的NaN替换成None

 更新时间:2023年08月15日 14:31:45   作者:什么都干的派森  
这篇文章主要介绍了pandas如何将dataframe中的NaN替换成None问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

pandas将dataframe的NaN替换成None

df = df.where(df.notnull(), None)

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-04-04
  • pytorch tensor计算三通道均值方式

    pytorch tensor计算三通道均值方式

    这篇文章主要介绍了pytorch tensor计算三通道均值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 使用Python在Excel中实现自动查找并替换数据

    使用Python在Excel中实现自动查找并替换数据

    随着项目的进展,需要经常在Excel业务表格中查找及替换数据,已保证数据与实际项目进度一致,手动一个一个查找,然后替换,效率太低,还容易遗漏,现在我们来试试用Python自动完成查找及替换吧,需要的朋友可以参考下
    2023-12-12
  • Windows自动化Python pyautogui RPA操作实现

    Windows自动化Python pyautogui RPA操作实现

    本文详细介绍了使用Python的pyautogui库进行Windows自动化操作的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • Jupyter notebook远程访问服务器的方法

    Jupyter notebook远程访问服务器的方法

    今天小编就为大家分享一篇Jupyter notebook远程访问服务器的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python中正则表达式详解

    Python中正则表达式详解

    Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,Python 会将正则表达式转化为字节码,利用 C 语言的匹配引擎进行深度优先的匹配。
    2017-05-05
  • 详解Python中break语句的用法

    详解Python中break语句的用法

    这篇文章主要介绍了详解Python中break语句的用法,是Python入门的呼出知识,需要的朋友可以参考下
    2015-05-05
  • Python使用cx_Oracle调用Oracle存储过程的方法示例

    Python使用cx_Oracle调用Oracle存储过程的方法示例

    这篇文章主要介绍了Python使用cx_Oracle调用Oracle存储过程的方法,结合具体实例分析了Python中通过cx_Oracle调用PL/SQL的具体步骤与相关操作技巧,需要的朋友可以参考下
    2017-10-10
  • python海龟绘图之画国旗实例代码

    python海龟绘图之画国旗实例代码

    这篇文章主要给大家介绍了关于python海龟绘图之画国旗的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • python如何实现DES加密

    python如何实现DES加密

    这篇文章主要介绍了python如何实现DES加密,帮助大家更好的理解和学习密码学,感兴趣的朋友可以了解下
    2020-09-09

最新评论