在泰坦尼克号数据框中使用Series.unique()时遇到问题。
虽然在原始df中使用Series.unique()不会产生任何错误,但是在基于特定列的串联火车和测试时,然后使用Series.unique()会给我带来错误。
根据我的尝试,这是由替换第5条语句中的空值引起的。如果我注释掉这一行,代码将正常工作而不会出现任何错误。为什么会这样呢?还可以解决吗?
<head>
可以从以下位置下载火车和测试文件:
https://www.kaggle.com/c/titanic/download/test.csv https://www.kaggle.com/c/titanic/download/train.csv
我当前正在使用Pandas版本0.23.4
答案 0 :(得分:1)
给出:
cat_cols = ['Pclass', 'Sex', 'Embarked']
df_train = pd.read_csv('train.csv')
df_pred = pd.read_csv('test.csv')
df_join = pd.concat([df_train[cat_cols], df_pred[cat_cols]])
NaN
值仅出现在Embarked
列中,可以通过以下代码进行验证:
df_join.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1309 entries, 0 to 417
Data columns (total 3 columns):
Pclass 1309 non-null int64
Sex 1309 non-null object
Embarked 1307 non-null object
dtypes: int64(1), object(2)
memory usage: 80.9+ KB
因此,用NaN
列值的模式替换Embarked
:
df_join.Embarked = df_join.Embarked.fillna(df_join.Embarked.mode()[0])
df_join.Embarked.value_counts().sum()
# 1309
并寻找唯一值:
df_join.Embarked.unique()
# array(['S', 'C', 'Q'], dtype=object)
提示:不是mode
而是mode()[0]
希望我回答了您的查询,如果没有对您的查询做出评论。