删除 Pandas 中的空列
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()"方法,以及如何实施它们以从数据框中删除空列。我们还了解了删除这些不必要数据的重要性,以及它如何提高数据框的相关性。