首页 > 解决方案 > Pandas 不会将分类数据 [sex] 更改为数值 [0/1]

问题描述

我正在尝试处理泰坦尼克号数据集。我想将Sex列转换为二进制值。这是我的尝试:

sex = train_dataset['Sex'].replace([0,1],['female','male'],inplace=True)

当我尝试时print(sex),控制台输出None

我也尝试在 SO 上实施其他方法,但它们似乎都不起作用。以下是我的完整源代码:

import pandas as pd
from numpy import corrcoef

train_dataset = pd.read_csv("https://raw.githubusercontent.com/oo92/Titanic-Kaggle/master/train.csv")
test_dataset = pd.read_csv("https://raw.githubusercontent.com/oo92/Titanic-Kaggle/master/test.csv")

survived = train_dataset['Survived']
pClass = train_dataset['Pclass']

#Doesn't work
sex = train_dataset['Sex'].replace([0,1],['female','male'],inplace=True)

age = train_dataset['Age']
fare = train_dataset['Fare']
parch = train_dataset['Parch']
sibSp = train_dataset['SibSp']

# print("Correlation between parent-children & survival is: " + str(corrcoef(survived, parch)))
# print("Correlation between age & survival is: " + str(corrcoef(survived, age)))
# print("Correlation between Siblings/Spouse & survival is: " + str(corrcoef(survived, sibSp)))

print(sex)

标签: pythonpandasmachine-learningcategorical-datakaggle

解决方案


参数的官方文档:

inplace : bool,默认 False 如果为 True,则就地。注意:这将修改此对象上的任何其他视图(例如,来自 DataFrame 的列)。如果为 True,则返回调用者。

总而言之,inplace=True返回Noneinplace=False返回执行操作的对象的副本。

因此,在您的操作中inplace=True,原始系列对象train_dataset['Sex']被修改。尝试打印train_dataset操作后,您应该会看到修改后的数据框。

参考这里的官方文档


推荐阅读