Объекты DataFrame являются изменяемыми, поэтому их нельзя хэшировать при использовании Series.unique () - PullRequest
0 голосов
/ 25 ноября 2018

У меня возникла проблема при использовании Series.unique () в титановом фрейме данных.

При использовании Series.unique () в исходном df не выдается ошибка, но при объединении поездов и тестов на основе определенныхстолбцы, а затем использование Series.unique () дает мне ошибку.

Это в соответствии с тем, что я пробовал, вызвано заменой нулевых значений в 5-м операторе.Если я закомментирую эту строку, код работает без каких-либо ошибок.Почему это так?А также есть ли работа вокруг?

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]])
df_join = df_join.fillna(df_join.mode, axis=0)
df_join.Embarked.unique()

Поезд и тестовые файлы можно скачать с:

https://www.kaggle.com/c/titanic/download/test.csv https://www.kaggle.com/c/titanic/download/train.csv

Яв настоящее время используется версия Pandas 0.23.4

1 Ответ

0 голосов
/ 25 ноября 2018

Дано:

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]

Надеюсь, я ответил на ваш запрос, если не прокомментировал ваш запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...