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

当我们在处理数据时,常常会遇到一些空值或缺失值的情况,而在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日

相关文章

  • 使用for循环创建一个pandas列

    使用for循环创建一个 Pandas 列的步骤如下: 导入所需的库 import pandas as pd 创建一个空的数据帧 df = pd.DataFrame() 创建一个列表,用于存储新列的值。例如,下面创建一个包含 10 个数的列表: new_col = [] for i in range(10): new_col.append(i * 2) 将新列…

    python-answer 2023年3月27日
    00
  • Pandas内置数据可视化ML

    Pandas是Python中一个流行的数据处理和分析库。除了提供强大的数据处理和分析能力外,Pandas还提供了内置的数据可视化功能。这个功能让我们可以用图表来更好地理解数据和分析数据。 Pandas的内置数据可视化功能 Pandas提供了许多内置的数据可视化工具,如下所示: 线型图 散点图 条形图 直方图 面积图 箱型图 我们可以使用.plot()方法进行…

    python-answer 2023年3月27日
    00
  • 如何利用python批量提取txt文本中所需文本并写入excel

    这里给出如何利用Python批量提取txt文本中所需文本并写入Excel的攻略,共分为五个步骤。 第一步 首先需要安装两个Python库,它们分别是pandas和glob,pandas用于将提取的内容写入Excel,glob用于遍历目标文件夹中的所有文件。 import pandas as pd import glob 第二步 使用glob库来遍历目标文件夹…

    python 2023年5月14日
    00
  • 在Pandas数据框架中把浮点数转换成整数

    在Pandas中,可以使用astype()方法将浮点数转换为整数。astype()方法可以将字段转换为指定的数据类型,包括int、float、category等。 以下是将浮点数转换为整数的完整攻略: 1. 创建一个包含浮点数的数据框架 我们首先需要创建一个包含浮点数的数据框架,用于演示astype()方法的使用。 import pandas as pd d…

    python-answer 2023年3月27日
    00
  • 如何在Python-Pandas中从字典中创建DataFrame

    在Python-Pandas中,可以从字典中创建DataFrame,以下是完整攻略和实例说明: Step 1:导入Pandas模块 在创建DataFrame之前,需要先导入Pandas模块。可以使用以下语句导入Pandas模块: import pandas as pd Step 2:从字典中创建DataFrame 可以使用Pandas中的DataFrame(…

    python-answer 2023年3月27日
    00
  • 对pandas通过索引提取dataframe的行方法详解

    接下来我将详细讲解 “对pandas通过索引提取dataframe的行方法详解”的完整攻略。 一、了解pandas的索引 在pandas中,索引是指针,指向一个或多个列,因此如果没有指定索引,则会自动生成一个默认的整数索引。 二、通过loc方法提取dataframe的行 loc方法可以精确地获取某些行或列,具体使用方法如下: df.loc[row_index…

    python 2023年5月14日
    00
  • Pandas之groupby( )用法笔记小结

    Pandas是Python中最流行的数据分析库之一,它提供了许多数据操作和处理的工具。其中一个重要的方法就是groupby()函数。 groupby()函数的基本用法 groupby()函数可以将数据按照某个或多个列进行分组,并将分组后的数据进行聚合处理。基本用法如下: df.groupby(by=None, axis=0, level=None, as_i…

    python 2023年5月14日
    00
  • 如何扩展Pandas DataFrame的列

    首先,将术语解释一下,因为Pandas里的数据是以DataFrame对象的形式存储的,DataFrame可以理解为一个二维表格,行对应数据的条目,列对应数据的属性。从这个角度来看,在Pandas中我们所说的“扩展DataFrame的列”,指的是添加新的列(也就是属性)到DataFrame对象中。 下面是一个添加新列到DataFrame中的完整攻略(注:以下所…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部