Python Pandas中缺失值NaN的判断,删除及替换

yizhihongxing

当我们在处理数据时,常常会遇到一些空值或缺失值的情况,而在Python Pandas中,缺失值一般表示为NaN。本文将详细讲解在Python Pandas中如何判断、删除和替换缺失值NaN。

判断缺失值

在Python Pandas中,我们可以使用isnull()和notnull()两个函数来判断缺失值。isnull()函数返回一个与原数据相同形状的布尔值对象,其中缺失值对应的位置为True,非缺失值对应的位置为False。notnull()函数则是isnull()函数的逆运算,返回一个与原数据相同形状的布尔值对象,其中非缺失值对应的位置为True,缺失值对应的位置为False。下面给出一个示例:

import pandas as pd
import numpy as np

data = pd.DataFrame(np.random.randn(5, 4), columns=['a', 'b', 'c', 'd'])
data.iloc[1][1] = np.nan
data.iloc[2][3] = np.nan
print(data.isnull())
print(data.notnull())

运行以上代码,输出结果如下所示:

       a      b      c      d
0  False  False  False  False
1  False   True  False  False
2  False  False  False   True
3  False  False  False  False
4  False  False  False  False

      a      b     c      d
0  True   True  True   True
1  True  False  True   True
2  True   True  True  False
3  True   True  True   True
4  True   True  True   True

上述示例中,通过isnull()函数和notnull()函数分别判断缺失值和非缺失值。

删除缺失值

一般情况下,我们可以通过dropna()函数来删除缺失值,该函数的语法格式为:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

其中,各参数的含义如下:

  • axis:删除缺失值的轴,0表示删除行,1表示删除列,默认为0。
  • how:控制删除的方式,any表示只要有缺失值就删除该行或列,all表示只有全部为缺失值才删除该行或列,默认为any。
  • thresh:控制每行或每列缺失值的个数,如果该行或该列缺失值的个数大于等于thresh,则保留,否则删除。
  • subset:指定需要判断缺失值的列。
  • inplace:是否在原数据上进行修改。

下面给出一个示例:

import pandas as pd
import numpy as np

data = pd.DataFrame(np.random.randn(5, 4), columns=['a', 'b', 'c', 'd'])
data.iloc[1][1] = np.nan
data.iloc[2][3] = np.nan
print(data.dropna())

上述示例中,我们通过dropna()函数删除包含缺失值的行,然后输出结果。运行以上代码,输出结果如下所示:

          a         b         c         d
0 -0.381394 -0.086755  0.360118  1.011548
3 -0.225572  1.024518 -0.286820  0.899173
4  0.138556 -0.245785 -0.573426  0.167627

替换缺失值

在Python Pandas中,我们可以使用fillna()函数来替换缺失值,该函数的语法格式为:

DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)

其中,各参数的含义如下:

  • value:需要替换的值。可以是标量值、字典、Serise、或者DataFrame。若是字典,则用于指定每一列的缺失值进行替换。
  • method:控制填充方式。默认为None,表示直接替换缺失值;后面还有ffill、bfill等选项。
  • axis:需要填充的轴,0表示填充行,1表示填充列。
  • inplace:是否在原数据上进行修改。
  • limit:进行填充时的最大填充数。
  • downcast:当满足条件时,可以对数据类型进行缩小。比如float64可以缩小到float32。

下面给出一个示例:

import pandas as pd
import numpy as np

data = pd.DataFrame(np.random.randn(5, 4), columns=['a', 'b', 'c', 'd'])
data.iloc[1][1] = np.nan
data.iloc[2][3] = np.nan
data.fillna(value=0, inplace=True)
print(data)

上述示例中,我们通过fillna()函数将缺失值替换成数值0,并在原数据上进行修改。运行以上代码,输出结果如下所示:

          a         b         c         d
0 -0.766557  0.460510 -1.345328  0.881857
1  1.281181  0.000000 -0.017178  0.693526
2  0.062681 -1.662775  0.191712  0.000000
3  0.100770  1.410193 -0.036825 -0.479593
4 -0.210373  0.191761 -1.578361 -0.134261

上述示例中,我们通过fillna()函数将缺失值替换成了数值0。

以上就是Python Pandas中缺失值NaN的判断、删除和替换的详细攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Pandas中缺失值NaN的判断,删除及替换 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 在python中使用pyspark读写Hive数据操作

    在Python中使用PySpark读写Hive数据需要进行以下步骤: 安装PySpark 在终端中运行以下命令进行安装: pip install pyspark 创建SparkSession对象 在Python中,使用Spark操作的入口点是SparkSession对象。在代码中创建SparkSession对象的代码如下: from pyspark.sql …

    python 2023年5月14日
    00
  • 合并两个具有相同列名的数据框架

    如果要合并两个具有相同列名的数据框架,可以使用R语言中的merge()函数。下面将给出详细的完整攻略。 步骤1:准备数据框架 首先需要准备两个数据框架,它们应该有相同的列名,数量可以不同,但是列名应该至少有一个是相同的。这里给出两个示例数据框架: df1 <- data.frame( name = c("Alice", "…

    python-answer 2023年3月27日
    00
  • 如何在Python-Pandas中遍历数据框架组

    在Python-Pandas中遍历数据框架组的攻略可以分为两种方法,一种是通过迭代器的方式,另一种是利用apply()方法。 方法一:迭代器方式 使用迭代器遍历数据框可以通过iterrows()和itertuples()方法实现。 iterrows()方法 iterrows()方法可以将数据框的每行作为一个元组返回,其中包含了每行的索引和值。下面是使用ite…

    python-answer 2023年3月27日
    00
  • 在Pandas系列中把多索引串联成单一索引

    要将多层级(多索引)的数据转换为单层级索引,可以使用Pandas中的reset_index()方法。这个方法将多层级的行列索引变化为最基础的单层级数据。下面是示例代码: import pandas as pd # 创建有多层级索引的数据 data = {‘color’: [‘blue’, ‘green’, ‘red’, ‘white’, ‘yellow’],…

    python-answer 2023年3月27日
    00
  • pandas.DataFrame.iloc的具体使用详解

    下面是“pandas.DataFrame.iloc的具体使用详解”的完整攻略。 标题 首先,在文档开头应该添加一个标题,如下所示: pandas.DataFrame.iloc的具体使用详解 简述 pandas是Python中十分常用的数据处理工具,其DataFrame中的iloc方法可以用于对数据进行随机访问和切片操作,其用法如下: DataFrame.il…

    python 2023年5月14日
    00
  • Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】

    Python操作MySQL数据库的两种方式实例分析 前言 MySQL是目前应用最广泛的开源关系型数据库之一,而Python则是一门功能强大、易学易用的编程语言,它们之间的结合是非常自然且高效的。本文将带大家了解如何使用Python连接并操作MySQL数据库。 准备工作 在使用Python连接MySQL数据库之前,我们需要确保以下几个条件已经具备: 已经安装M…

    python 2023年5月14日
    00
  • 从Dict列表中创建一个Pandas数据框架

    要从Dict(字典)列表中创建Pandas数据框架,可以按照以下步骤进行操作: 导入Pandas库 在Python中使用Pandas库需要先导入该库,可以通过以下代码实现: import pandas as pd 创建字典列表 为了创建Pandas数据框架,我们需要先创建一个包含数据的字典列表。这个列表中的每个字典代表一行数据,字典的键是数据框架中的列名,键…

    python-answer 2023年3月27日
    00
  • Pandas多个条件(AND,OR,NOT)中提取行

    下面是Pandas多个条件中提取行的攻略。 1. 选择多行数据 通常,我们可以使用loc或iloc来选择某一行或某些行的数据,如: df.loc[3] # 选择第3行数据 df.iloc[[0, 2]] # 选择第1行和第3行的数据 但是,如果我们需要选择多个条件下的行数据时,可以使用多个逻辑操作符(例如&, |, ~),并放置在括号中,比如: df…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部