Столбцы неупорядочены в перекрестной таблице pandas

#python #pandas #crosstab

#python #pandas #перекрестная таблица

Вопрос:

изображение ноутбука jupyter

Код предназначен для создания 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. Большое спасибо за хороший совет. Я никогда не представлял, что пропущенные значения работают таким образом.