列在熊猫交叉表中混乱

时间:2019-04-08 01:58:09

标签: python pandas crosstab

jupyter notebook image

代码是使用Seaborn中的Titanic数据集构建pd.crosstab。输出表中的列总和看起来很混乱。

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 :(得分:0)

总计的翻转/反转完全是由于原始age列中以及随后创建的合并的adult列中存在NaN值。您只需将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