#python #pandas #crosstab
#python #pandas #перекрестная таблица
Вопрос:
Код предназначен для создания pd.crosstab с набором данных Titanic в Seaborn. Суммы столбцов в выходной таблице выглядят неупорядоченными.
import pandas as pd
import seaborn as sns
titanic = sns.load_dataset('titanic')
bin = [0,15,100]
titanic["adult"] = pd.cut(titanic.age, bin, labels=["kid","adult"])
pd.crosstab(titanic.survived, titanic.adult, normalize=True, margins=True)
Я ожидал, что будет 0.116246 / 0.883754 / 1.000000
, но он выдает 0.883754 / 0.116246 / 1.000000
в последней строке, где должны быть размещены суммы столбцов.
Ответ №1:
Переключение / отмена итогов происходит просто из-за наличия значений NaN в исходном age
столбце, а затем в созданном вами объединенном adult
столбце. Вы должны просто добавить dropna=False
в свою pd.crosstab()
команду, которая вернет правильный результат:
pd.crosstab(titanic.survived, titanic.adult, dropna=False, normalize=True, margins=True)
adult kid adult All
survived
0 0.047619 0.546218 0.616162
1 0.068627 0.337535 0.383838
All 0.116246 0.883754 1.000000
Комментарии:
1. Большое спасибо за хороший совет. Я никогда не представлял, что пропущенные значения работают таким образом.