Pandas 删除空列
Pandas数据帧是一个非常强大的数据处理工具。它是一个由行和列组成的表格数据结构。这个二维矩阵的大小可以根据数据集的复杂性而变化。我们可以使用不同类型的源来创建数据帧,从数据库到文件都可以。
在Pandas数据帧中,列代表一系列信息,可以是整数、浮点数或字符串。我们可以对这些列执行许多操作,包括删除、索引、过滤等。在本文中,我们将执行一种基本操作,即从Pandas数据帧中删除/移除空列。
首先,让我们了解一下数据帧中的空列是什么。
创建带有空列的数据帧
通过利用计算技术,我们创建一个用于分析数据的数据帧。每一列都包含一部分数据,并且具有一定的意义。在复杂数据集的情况下,生成的数据帧可能包含一些空列,这会降低数据帧的相关性。为了产生一个优化的数据帧,我们倾向于从中消除这种不必要的数据。
如果一列包含“NaN”(非数值)值,则被视为“空”。包含“空格”和“零”值的列在本质上不为空,因为“空格”和“零值”都代表数据集的某些信息。
当我们创建一个数据帧并且没有向列中传递任何数据时,就会创建一个空列。我们可以使用“dataframe.drop()”方法来删除常规列和空列,但是为了特定地删除空列,我们使用“dataframe.dropna()”方法。让我们创建一个带有“NaN”值的数据帧,然后开始删除操作。
示例
我们导入了“pandas”和“numpy”库,然后传递了一个包含有关不同宿舍的信息的字典数据集。
我们使用“DataFrame()”函数创建了数据帧,并传递了一个用于标记行的值列表。
在数据集中,我们使用numpy库为“Hostel location”列分配了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
Note - 如果我们想对当前数据框进行更改而不是创建一个新的数据框,我们使用“ 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()” 方法以及它们如何被应用于从数据框中删除空列。我们还了解到了摆脱这些不必要的数据的重要性以及它如何增加数据框的相关性。