df = pd.read_csv('../data/titanic.csv', index_col='PassengerId')
df.head()

"""
Explanation: 1. Загрузите выборку из файла titanic.csv с помощью пакета Pandas.
End of explanation
"""


df_no_missing = df[['Survived', 'Pclass', 'Fare', 'Age', 'Sex']].dropna()
X_train_withStrings = df_no_missing[['Pclass', 'Fare', 'Age', 'Sex']]
y_train = df_no_missing['Survived']

def strings_to_int(df, target_column):
    df_mod = df.copy()
    targets_to_rename = df_mod[target_column].unique()
    map_to_int = {name: n for n, name in enumerate(targets_to_rename)}
    df_mod[target_column] = df_mod[target_column].replace(map_to_int)

    return df_mod

X_train = strings_to_int(X_train_withStrings, "Sex")
X_train.head()

"""
Explanation: 2. Оставьте в выборке четыре признака: класс пассажира (Pclass), цену билета (Fare), возраст пассажира (Age) и его пол (Sex).
3. Обратите внимание, что признак Sex имеет строковые значения.
4. Выделите целевую переменную — она записана в столбце Survived.
5. В данных есть пропущенные значения — например, для некоторых пассажиров неизвестен их возраст. Такие записи при чтении их в pandas принимают значение nan. Найдите все объекты, у которых есть пропущенные признаки, и удалите их из выборки.
End of explanation
"""


clf = DecisionTreeClassifier(random_state=241)
clf.fit(X_train, y_train)

"""
Explanation: 6. Обучите решающее дерево с параметром random_state=241 и остальными параметрами по умолчанию.
End of explanation
"""


importances = pd.Series(clf.feature_importances_, index = list(X_train))
importances
print(' '.join(importances.sort_values(ascending=False).head(2).index.values))

"""
Explanation: 7. Вычислите важности признаков и найдите два признака с наибольшей важностью. Их названия будут ответами для данной задачи (в качестве ответа укажите названия признаков через запятую без пробелов).
End of explanation
"""


