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