pandas 交叉表中的列混乱
The columns are disarrayed in pandas crosstab
代码是在Seaborn中用Titanic数据集构建一个pd.crosstab。输出中的列总和 table 看起来很乱。
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
应该放置列总和的位置。
总计 flipping/reversal 仅仅是因为原始 age
列中存在 NaN 值,随后在您创建的分箱 adult
列中存在 NaN 值。您应该将 dropna=False
添加到 pd.crosstab()
命令,这将 return 正确的结果:
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
代码是在Seaborn中用Titanic数据集构建一个pd.crosstab。输出中的列总和 table 看起来很乱。
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
应该放置列总和的位置。
总计 flipping/reversal 仅仅是因为原始 age
列中存在 NaN 值,随后在您创建的分箱 adult
列中存在 NaN 值。您应该将 dropna=False
添加到 pd.crosstab()
命令,这将 return 正确的结果:
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