Колонны разбиты в кросс-таблице панд - PullRequest
1 голос
/ 08 апреля 2019

jupyter notebook image

Код состоит в создании 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 Ответ

0 голосов
/ 08 апреля 2019

Переворот / сторнирование итогов происходит просто из-за присутствия значений 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...