在 Pandas 数据分析中,有时候我们需要从数据集中选择特定的列进行分析,而忽略掉其他的列。在这种情况下我们需要在 Pandas 中排除列。以下是在 Pandas 中排除列的完整攻略。
准备数据
首先,我们需要准备一份数据样本,这里以 Titanic 数据集为例:
import pandas as pd
# 读取数据集
df = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/train.csv')
# 查看前几行数据
df.head()
输出:
survived sex age n_siblings_spouses parch fare embarked class deck embark_town alone
0 0 male 22.0 1 0 7.2500 S Third NaN Southampton False
1 1 female 38.0 1 0 71.2833 C First C Cherbourg False
2 1 female 26.0 0 0 7.9250 S Third NaN Southampton True
3 1 female 35.0 1 0 53.1000 S First C Southampton False
4 0 male 28.0 0 0 8.4583 Q Third NaN Queenstown True
方法一:使用 drop 函数
Pandas 提供了 drop()
函数来排除某些列。drop()
函数的参数 columns
接受一个包含列名的列表。以下是使用 drop()
函数排除一列的示例:
# 排除 deck 列
df.drop(columns=['deck'], inplace=True)
# 查看更新后的列
df.head()
输出:
survived sex age n_siblings_spouses parch fare embarked class embark_town alone
0 0 male 22.0 1 0 7.2500 S Third Southampton False
1 1 female 38.0 1 0 71.2833 C First Cherbourg False
2 1 female 26.0 0 0 7.9250 S Third Southampton True
3 1 female 35.0 1 0 53.1000 S First Southampton False
4 0 male 28.0 0 0 8.4583 Q Third Queenstown True
可以看到,drop()
函数已经将 deck
列排除了。
方法二:使用 loc 函数
另一种排除列的方法是使用 Pandas 的 loc
函数,这个方法可以同时选择行和列。以下是使用 loc
函数排除一列的示例:
# 排除 embarked 列
df.drop(columns=df.loc[:, 'embarked'].name, inplace=True)
# 查看更新后的列
df.head()
输出:
survived sex age n_siblings_spouses parch fare class embark_town alone
0 0 male 22.0 1 0 7.2500 Third Southampton False
1 1 female 38.0 1 0 71.2833 First Cherbourg False
2 1 female 26.0 0 0 7.9250 Third Southampton True
3 1 female 35.0 1 0 53.1000 First Southampton False
4 0 male 28.0 0 0 8.4583 Third Queenstown True
同样可以看到,embarked
列已被排除。
方法三:使用布尔索引
最后一种排除列的方法是使用布尔索引。布尔索引是一种可以选取每行的子集的技术,这里我们用它来选择特定列。以下是使用布尔索引排除列的示例:
# 先创建一个布尔索引
bool_cols = [col for col in df.columns if col not in ['deck', 'embarked']]
bool_cols
# 使用布尔索引排除列
df = df[bool_cols]
# 查看更新后的列
df.head()
输出:
survived sex age n_siblings_spouses parch fare class embark_town alone
0 0 male 22.0 1 0 7.2500 Third Southampton False
1 1 female 38.0 1 0 71.2833 First Cherbourg False
2 1 female 26.0 0 0 7.9250 Third Southampton True
3 1 female 35.0 1 0 53.1000 First Southampton False
4 0 male 28.0 0 0 8.4583 Third Queenstown True
同样可以看到,deck
和 embarked
列已被排除。
这三种方法均能实现排除列的操作,可以根据实际需求选用其中的一种。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Pandas中排除列 - Python技术站