删除 Pandas 中的空列

pandaspythonserver side programmingprogramming

Pandas 数据框是一种非常强大的数据处理工具。它是一种由行和列组成的表格数据结构。此二维矩阵的大小可以根据数据集的复杂性而变化。我们可以使用不同类型的源来创建从数据库到文件的数据框。

Pandas 数据框中的列代表一系列信息,可以是整数、浮点数或字符串。我们可以对这些列执行许多操作,包括删除、索引、过滤等。在本文中,我们将执行一项基本操作,即从 Pandas 数据框中删除空列。

首先,让我们了解数据框中的空列是什么。

创建带有空列的数据框

我们利用计算技术创建一个用于分析数据的数据框。每一列都包含一段数据,并且具有一定的重要性。对于复杂的数据集,生成的数据框可能包含一些空列,这会降低数据框的相关性。为了生成优化的数据框,我们倾向于从中消除这种不必要的数据。

如果一列由"NaN"(非数字)值组成,则该列被视为"空"。由"空格"和""值组成的列本质上不是"空",因为"空格"和"零值"都表示有关数据集的某些信息。

当我们创建数据框但不向列传递任何数据时,会创建一个空列。我们可以借助"dataframe.drop()"方法删除常规列和空列,但对于特定删除空列,我们使用"dataframe.dropna()"方法。让我们创建一个带有"NaN"值的数据框,然后开始删除操作。

示例

我们导入了"pandas"和"numpy"库,然后传递了一个包含与不同旅馆相关的信息的字典数据集。

我们在"DataFrame()"函数的帮助下创建了数据框,并传递了一个用于标记行的值列表。

在数据集中,我们借助 numpy 库将 NaN 值分配给"旅馆位置"列,最后打印了数据框。

import pandas as pd
import numpy as np

dataset = {"Hostel ID":["DSC224", "DSC124", "DSC568", "DSC345"], "Hostel Rating":[8, 6, 10, 5], "Hostel price":[35000, 32000, 50000, 24000], "Hostel location": [np.nan, np.nan, np.nan, np.nan]}

dataframe = pd.DataFrame(dataset, index= ["Hostel 1", "Hostel 2", "Hostel 3", "Hostel 4"])
print(dataframe)

输出

          Hostel ID   Hostel Rating      Hostel price      Hostel location
Hostel 1    DSC224              8         35000              NaN
Hostel 2    DSC124              6         32000              NaN
Hostel 3    DSC568             10         50000              NaN
Hostel 4    DSC345              5         24000              NaN

使用 dropna() 方法删除空列

让我们将 dropna() 方法应用于前面的数据框。

示例

创建数据框后,我们使用"dropna()"函数删除所有具有 NaN 值的列。

由于我们操作的是列,因此我们将轴值指定为"1",然后通过将"how"值指定为"all"来编程删除逻辑。 这意味着只有当列的所有值都是"NaN"时,才会删除该列。

最后,我们创建并打印了一个具有非"NaN"值的新数据框。

import pandas as pd
import numpy as np
dataset = {"Hostel ID":["DSC224", "DSC124", "DSC568", "DSC345"], "Hostel Rating":[8, 6, 10, 5], "Hostel price":[35000, 32000, 50000, 24000], "Hostel location": [np.nan, np.nan, np.nan, np.nan]}
dataframe = pd.DataFrame(dataset, index= ["Hostel 1", "Hostel 2", "Hostel 3", "Hostel 4"])
print(dataframe)
Emp_drop = dataframe.dropna(how= "all", axis=1)
print("After dropping the empty columns using dropna() we get: -")
print(Emp_drop)

输出

         Hostel ID     Hostel Rating     Hostel price     Hostel location
Hostel 1    DSC224              8         35000              NaN
Hostel 2    DSC124              6         32000              NaN
Hostel 3    DSC568             10         50000              NaN
Hostel 4    DSC345              5         24000              NaN
After dropping the empty columns using dropna() we get: -
           Hostel ID     Hostel Rating   Hostel price
Hostel 1    DSC224              8         35000
Hostel 2    DSC124              6         32000
Hostel 3    DSC568             10         50000
Hostel 4    DSC345              5         24000

注意− 如果我们想更改当前数据框而不是创建新数据框,则使用"inplace"子句。

dataframe.dropna(how= "all", axis=1, inplace=True)
print(dataframe)

使用 notnull() 方法删除空列

创建数据框后,我们使用 notnull() 方法以及 loc() 函数来过滤和选择具有"NaN"值的列。我们指定了评估轴并打印了具有非"NaN"值的数据框。

示例

import pandas as pd
import numpy as np
dataset = {"Hostel ID":["DSC224", "DSC124", "DSC568", "DSC345"], "Hostel Rating":[8, 6, 10, 5], "Hostel price":[35000, 32000, 50000, 24000], "Hostel location": [np.nan, np.nan, np.nan, np.nan]}
dataframe = pd.DataFrame(dataset, index= ["Hostel 1", "Hostel 2", "Hostel 3", "Hostel 4"])
print(dataframe)
dataframe = dataframe.loc[:, dataframe.notnull().any(axis=0)]
print("Using notnull() method to remove empty columns: -")
print(dataframe)

输出

         Hostel ID  Hostel Rating  Hostel price  Hostel location
Hostel 1    DSC224              8         35000              NaN
Hostel 2    DSC124              6         32000              NaN
Hostel 3    DSC568             10         50000              NaN
Hostel 4    DSC345              5         24000              NaN
Using notnull() method to remove empty columns: -
         Hostel ID  Hostel Rating  Hostel price
Hostel 1    DSC224              8         35000
Hostel 2    DSC124              6         32000
Hostel 3    DSC568             10         50000
Hostel 4    DSC345              5         24000

结论

在本文中,我们介绍了删除空列(即由"NaN"值组成的列)的不同方法。我们讨论了"dropna()"方法和"notnull()"方法,以及如何实施它们以从数据框中删除空列。我们还了解了删除这些不必要数据的重要性,以及它如何提高数据框的相关性。


相关文章