pandas中关于nan的处理方式

 更新时间:2024年02月02日 08:51:08   作者:我是小蚂蚁  
这篇文章主要介绍了pandas中关于nan的处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

pandas关于nan的处理

在pandas中有个另类的存在就是nan

解释是

not a number,不是一个数字,但是它的类型确是一个float类型。

numpy中也存在关于nan的方法

如:np.nan

对于pandas中nan的处理,简单的说有以下几个方法。

  • 查看是否是nan, s1.isnull() 和 s1.notnull()
  • 丢弃有nan的索引项,s1.dropna()
  • 将nan填充为其他值,df2.fillna()
import numpy as np
import pandas as pd
from pandas import Series, DataFrame

n = np.nan
print(type(n)) # <class 'float'>

m = 1
print(n+m) # nan 任何数字和nan进行计算,都是nan

# nan in series
s1 = Series([1, 2, np.nan, 3, 4], index=['A', 'B', 'C', 'D', 'E'])
print(s1)
'''
A    1.0
B    2.0
C    NaN
D    3.0
E    4.0
dtype: float64
'''

print(s1.isnull()) # 返回 bool值,是 nan 的话,返回true
'''
A    False
B    False
C     True
D    False
E    False
dtype: bool
'''

print(s1.notnull()) # 非 nan , 返回true
'''
A     True
B     True
C    False
D     True
E     True
dtype: bool
'''

# 去掉 有 nan 的索引项
print(s1.dropna())
'''
A    1.0
B    2.0
D    3.0
E    4.0
dtype: float64
'''

# nan in dataframe
df = DataFrame([[1, 2, 3], [np.nan, 5, 6], [7, np.nan, 9], [np.nan, np.nan, np.nan]])
print(df)
'''
     0    1    2
0  1.0  2.0  3.0
1  NaN  5.0  6.0
2  7.0  NaN  9.0
3  NaN  NaN  NaN
'''

print(df.isnull()) # df.notnull() 同理
'''
       0      1      2
0  False  False  False
1   True  False  False
2  False   True  False
3   True   True   True
'''

# 去掉 所有 有 nan 的 行, axis = 0 表示 行方向
df1 = df.dropna(axis=0)
print(df1)
'''
     0    1    2
0  1.0  2.0  3.0
'''

# 表示在 列 的方向上。
df1 = df.dropna(axis=1)
print(df1)
'''
mpty DataFrame
Columns: []
Index: [0, 1, 2, 3]
'''

# any 只要有 nan 就会删掉。 all 是必须全是nan才删除
df1 = df.dropna(axis=0, how='any')
print(df1)
'''
     0    1    2
0  1.0  2.0  3.0
'''

# any 只要有 nan 就会删掉。 all 全部是nan,才会删除
df1 = df.dropna(axis=0, how='all')
print(df1)
'''
     0    1    2
0  1.0  2.0  3.0
1  NaN  5.0  6.0
2  7.0  NaN  9.0
'''

df2 = DataFrame([[1, 2, 3, np.nan], [2, np.nan, 5, 6], [np.nan, 7, np.nan, 9], [1, np.nan, np.nan, np.nan]])
print(df2)
'''
     0    1    2    3
0  1.0  2.0  3.0  NaN
1  2.0  NaN  5.0  6.0
2  NaN  7.0  NaN  9.0
3  1.0  NaN  NaN  NaN
'''

print(df2.dropna(thresh=None))
'''
Empty DataFrame
Columns: [0, 1, 2, 3]
Index: []
'''

print(df2.dropna(thresh=2)) #  thresh 表示一个范围,如:每一行的nan > 2,就删除
'''
     0    1    2    3
0  1.0  2.0  3.0  NaN
1  2.0  NaN  5.0  6.0
2  NaN  7.0  NaN  9.0
'''

# 将nan进行填充
print(df2.fillna(value=1))
'''
     0    1    2    3
0  1.0  2.0  3.0  1.0
1  2.0  1.0  5.0  6.0
2  1.0  7.0  1.0  9.0
3  1.0  1.0  1.0  1.0
'''

# 可以 为指定列 填充不同的 数值
print(df2.fillna(value={0: 0, 1: 1, 2: 2, 3: 3})) # 指定每一列 填充的数值
'''
     0    1    2    3
0  1.0  2.0  3.0  3.0
1  2.0  1.0  5.0  6.0
2  0.0  7.0  2.0  9.0
3  1.0  1.0  2.0  3.0
'''


# 以下两个例子需要说明的是:对dataframe进行dropna,原来的dataframe不会改变
print(df1.dropna())
'''
     0    1    2
0  1.0  2.0  3.0
'''
print(df1)
'''
     0    1    2
0  1.0  2.0  3.0
1  NaN  5.0  6.0
2  7.0  NaN  9.0
'''

总结

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

相关文章

  • 深入了解Python中运算符函数的使用

    深入了解Python中运算符函数的使用

    Python 在“运算符”模块下为许多数学、逻辑、关系、按位等操作预定义了函数。本文介绍了一些基本功能,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-09-09
  • Protocol Buffers(Protobuf)功能及使用方法

    Protocol Buffers(Protobuf)功能及使用方法

    本文介绍了ProtocolBuffers(Protobuf)及其编译器protoc,包括其数据描述语言的特性、编译器的功能、.proto文件的定义、使用方法、支持的编程语言、安装步骤、常用命令选项以及高级功能,感兴趣的朋友跟随小编一起看看吧
    2025-01-01
  • Python处理电子表格的Pandas、OpenPyXL、xlrd和xlwt库

    Python处理电子表格的Pandas、OpenPyXL、xlrd和xlwt库

    在Python中处理表格数据,有几个非常流行且功能强大的库,Pandas在数据分析方面提供了广泛的功能,而OpenPyXL、xlrd和xlwt则在处理Excel文件方面各有所长,以下是一些最常用的库及其示例代码
    2024-01-01
  • Python实现vlog生成器的示例代码

    Python实现vlog生成器的示例代码

    vlog,全称为Video blog,意为影音博客,也有翻译为微录。本文将尝试用Python基于Moviepy从一个文本文件中自动生成一个视频格式的vlog,感兴趣的可以了解一下
    2023-01-01
  • Python实现调用MySQL数据库的存储过程

    Python实现调用MySQL数据库的存储过程

    这篇文章主要为大家详细介绍了如何使用Python实现调用MySQL数据库的存储过程,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2026-01-01
  • Python安装Graphviz超详细图文教程

    Python安装Graphviz超详细图文教程

    这篇文章主要介绍了Python安装Graphviz超详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • Python的命令行参数实例详解

    Python的命令行参数实例详解

    python中有一个模块sys,sys.argv这个属性提供了对命令行参数的访问,下面这篇文章主要给大家介绍了关于Python命令行参数实例的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • Python绘制灯笼的示例代码

    Python绘制灯笼的示例代码

    这篇文章主要为大家介绍了如何通过Python绘制一个灯笼,文中的示例代码讲解详细,对我们学习Python有一定帮助,感兴趣的小伙伴可以跟随小编学习一下
    2022-02-02
  • Python Django 前后端分离 API的方法

    Python Django 前后端分离 API的方法

    今天小编就为大家分享一篇Python Django 前后端分离 API的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python爬虫之Selenium实现关闭浏览器

    Python爬虫之Selenium实现关闭浏览器

    这篇文章主要介绍了Python爬虫之Selenium实现关闭浏览器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论