python中如何使用Pandas的isna技术

515 阅读8分钟

在这篇文章中,我将解释如何使用Pandas的isna技术。

我将描述该技术的作用,解释其语法,并向你展示如何使用它的清晰例子。

如果你需要学习一些具体的东西,只需点击这些链接中的一个。

让我们从快速介绍isna() 技术开始吧。

对Pandas isna的快速介绍

Pandas isna方法可以检测Python数据框架或Pandas系列中的缺失值。

A simple example of Pandas isna detecting missing values in Python data.

如上所述,我们可以在几种不同的数据结构上使用Pandas isna,包括。

  • 潘达斯系列
  • 潘达斯数据框架
  • 数据框架中的各个列

所以在这个意义上,这个方法在我们如何使用它方面是灵活的。

Pandas isna对于Python的数据处理非常重要

isna方法对于Python中的数据整理非常重要。

当我们整理数据时,处理缺失值是一个非常常见的问题,而且当我们分析数据或创建机器学习模型时也是如此。

事实上,当你整理或分析一个数据集时,寻找和处理缺失值是你首先要做的事情之一。

既然如此,当你在处理Python数据时,你需要一种方法来识别缺失值。

输入,Pandas isna。

isna的语法

让我们来看看isna() 技术的语法。

在这里,我们将分别看一下以下 Python 数据结构的语法。

  • 数据帧
  • 系列
  • 数据框列

原因是,Pandas isna的语法对每一种对象类型都会略有不同。

一个简单的说明

在看语法之前,我想提醒你几件事。

首先,下面的语法解释假设你已经安装了Pandas并将其导入到你的环境中。

假设你的电脑上已经安装了它,你可以用这段代码导入Pandas。

import pandas as pd

第二,下面的语法解释假设你有一个Pandas数据框或一个Pandas系列对象可用。

说了这么多,让我们来看看语法。

系列的语法

首先,我们来看看如何在一个单独的潘达斯系列上使用isna() 的语法。

当你在一个系列上使用isna时,你首先只需输入系列对象的名称(即你分配给它的名称)。

In image that explains the syntax for using Pandas isna on a Pandas series object.

然后,你只需输入.isna() 来调用这个方法,就像你在 Python 上调用任何其他方法一样。

这就是它的全部内容。

当你这样做的时候,这个方法将产生一个新的布尔真/假值系列,它将显示在原始系列中缺少的值。

数据框架语法

接下来,让我们看看如何在一个数据框架上使用isna。

数据框架的语法与上面潘达斯系列的语法非常相似。

首先,你只需输入你想操作的数据框架的名称。

An image that shows the syntax for how to use isna on a Python dataframe.

然后你输入.isna() 来调用这个方法。

因此,如果你的数据框架被命名为your_dataframe ,你就输入代码your_dataframe.isna()

这个操作的输出将是一个与你的输入数据框架大小相同的对象。 这个输出将包含True/False值,表明哪些数据框架的值在原始数据中丢失。

列的语法

最后,我们来看看如何在数据框架的单列上使用Pandas isna的语法。

这里需要记住的是,数据框架中的单个列实际上是Pandas系列对象。 因此,如果我们使用 "点语法 "来检索一个列,那么我们就可以使用上面的语法来处理Pandas系列。

让我们来看看这是如何工作的。

首先,你可以输入数据框架的名称。

然后,你使用 "点语法 "来指定你想操作的数据框架内的各个列

An explanation of the syntax for how to use Pandas isna on a dataframe column.

因此,将Pandas.isna() 应用于数据框架的一个列包括两个步骤。

  • 用 "点语法 "从数据框架中获取该列
  • 使用.isna() 方法

因此,例如,如果你有一个名为your_dataframe 的数据框架,其中包含一个名为column 的列,那么你将使用语法your_dataframe.column.isna() 来查找该特定列中的缺失值。

输出(补充说明)

很快,让我们来谈谈输出的结构和内容。

正如我上面提到的,.isna() 的输出是一个新的Pandas对象,与输入对象的大小相同。

这个新对象将包含真/假值,显示哪些值是缺失的(True 表示缺失)。

.isna() 将被认为是 "缺失 "的值类型有。

  • None
  • numpy.NaN

因此,空字符串(即'' )或numpy.inf ,将计入缺失值;.isna() 将对这些值返回False

示例:如何在Python中检测缺失值

现在我们已经看完了语法,让我们看一下Pandas的一些例子isna().

例子

  • [识别一个数据框架列中的缺失值]
  • [识别整个数据框架中的缺失值]
  • [计算数据框架中每一列的缺失值]

先运行这段代码

在我们运行这些例子之前,你需要进行一些初步设置。

具体来说,你需要

  • 导入Pandas和Numpy
  • 创建一个数据框架

让我们分别进行这些工作。

加载Pandas

首先,我们需要导入Pandas和Numpy。

import pandas as pd
import numpy as np

我们将使用Pandas创建一个数据框架,我们将使用Numpy在该数据框架内使用np.nan 创建缺失值。

创建一个数据框架

接下来,我们需要创建一个我们可以使用的数据框架。

在这里,我们将创建一个包含模拟销售数据的数据框架。

sales_data = pd.DataFrame({"name":["William","Emma","Sofia","Markus","Edward","Thomas","Ethan","Olivia","Arun","Anika","Paulo"]
,"region":["East",np.nan,"East","South","West","West","South","West","West","East","South"]
,"sales":[50000,52000,90000,np.nan,42000,72000,49000,np.nan,67000,65000,67000]
,"expenses":[42000,43000,np.nan,44000,38000,39000,42000,np.nan,39000,44000,45000]})

让我们打印这个数据框架来看看它的内容。

print(sales_data)

输出。

       name region    sales  expenses
0   William   East  50000.0   42000.0
1      Emma    NaN  52000.0   43000.0
2     Sofia   East  90000.0       NaN
3    Markus  South      NaN   44000.0
4    Edward   West  42000.0   38000.0
5    Thomas   West  72000.0   39000.0
6     Ethan  South  49000.0   42000.0
7    Olivia   West      NaN       NaN
8      Arun   West  67000.0   39000.0
9     Anika   East  65000.0   44000.0
10    Paulo  South  67000.0   45000.0

这个数据框,sales_data ,有四个变量。 其中两个变量包含字符数据,另外两个变量包含数字数据。

关键的是,你会注意到有些数值是缺失的(即:NaN )。

我们将使用.isna() 来检测这些缺失值。

实例1:识别数据框架列中的缺失值

首先,我们将识别一个特定列中的缺失值。

我们将识别数据框架中sales 列中的缺失值。

sales_data.sales.isna()

输出

0     False
1     False
2     False
3      True
4     False
5     False
6     False
7      True
8     False
9     False
10    False

解释

在这里,我们已经确定了sales_data 数据框架的sales 列中的缺失值。

这包括两个步骤。

  • 我们使用 "点语法 "检索了sales 列。
  • 然后,我们调用.isna() ,以确定该列中的缺失值。

因此,sales_data.sales 从数据框架中检索出sales 列。

然后,语法.isna() ,以确定缺失的值。

注意,这段代码的输出是一个新的对象,其形状与sales 列相同。 还注意到,在sales 列中缺少数值的地方,输出显示True 。 否则,输出显示False

实例2:识别整个数据框架中的缺失值

接下来,我们要找出整个数据框架中的缺失值。

为了做到这一点,我们将输入数据框架的名称,然后调用.isna()

sales_data.isna()

输出

     name  region  sales  expenses
0   False   False  False     False
1   False    True  False     False
2   False   False  False      True
3   False   False   True     False
4   False   False  False     False
5   False   False  False     False
6   False   False  False     False
7   False   False   True      True
8   False   False  False     False
9   False   False  False     False
10  False   False  False     False

解释

这应该很容易理解。

在这里,我们在整个sales 数据框上调用了.isna() 方法。

要做到这一点,我们只需键入数据框架的名称,然后键入.isna() 来调用该方法。

在输出中,你会注意到输入的每一个值都有布尔型的真/假值。 在sales 数据框中缺少数值的地方,输出显示True ,否则输出显示False

实例3:计算数据框架每一列中的缺失值

最后,让我们计算一下数据框架每一列中的缺失值。

为了实现这个目标,我们将使用两个Pandas方法。

  • Pandas isna
  • 潘达的sum

我们将使用isna来识别缺失的值,并使用Pandas sum来计算它们。

(sales_data
 .isna()
 .sum()
)

输出

name        0
region      1
sales       2
expenses    2
dtype: int64

解释

仔细看一下输出。 输出显示了输入数据框架中每一列的缺失值的计数

为了达到这个目的,我们需要调用两个Pandas方法,一个接着一个。

首先,我们调用.isna() 方法,确定缺失值。

然后,我们调用.sum() 来计算它们。

此外,注意我们使用了一个特殊的语法技巧。 我们把整个方法链放在括号里。 而且,我们把不同的方法放在不同的行上。

我有时会把这称为Pandas方法链,尽管请记住,你几乎可以把它用于任何类型的Python方法。

这是一个有点非传统的技术,但在你进行数据处理或数据分析时,是非常强大的。 如果你知道如何正确地使用这种技术,你可以把多个方法(很多都超过2个)连锁起来,进行复杂的数据操作。 这也使得阅读和调试你的代码变得更加容易。

这是掌握Pandas的秘诀之一,你真的应该学习一下。