我的数据框有4列(一个因变量和3个自变量)。下面是一个示例:
我希望得到的结果是一个列联表,如下所示:
我似乎只能使用一个自变量得到一个列联表-使用下面的代码(我的df被称为'table')
pd.crosstab(index=table['Dvar'],columns=table['Var1'])
我似乎不能添加任何其他变量......唯一的方法是为每个变量(1到3)制作一个单独的列联表,然后合并/连接它们吗?
gk7wooem1#
首先,列联表用于显示特征之间的相关性。如果您希望大概了解独立和从属特征之间的相关性,请执行以下代码:
pd.crosstab([table['Var1'],table['Var2'],table['Var3']], table['Dvar'], margins = False)
但是,如前所述,要获得所需的输出,请使用pandas.DataFrame.groupby语句:
pandas.DataFrame.groupby
table.groupby('Dvar').sum()
lo8azlld2#
对于crosstab,这不是一个好的用例,因为您已经有了列联表(只是没有聚合),而应该使用groupby.sum
crosstab
groupby.sum
df = pd.DataFrame([[1,0,0,0], [1,1,1,0], [0,1,1,1]], columns=['Var1', 'Var2', 'Var3', 'Dvar']) out = df.groupby('Dvar', as_index=False).sum()
输出:
Dvar Var1 Var2 Var3 0 0 2 1 1 1 1 0 1 1
2条答案
按热度按时间gk7wooem1#
首先,列联表用于显示特征之间的相关性。
如果您希望大概了解独立和从属特征之间的相关性,请执行以下代码:
但是,如前所述,要获得所需的输出,请使用
pandas.DataFrame.groupby
语句:lo8azlld2#
对于
crosstab
,这不是一个好的用例,因为您已经有了列联表(只是没有聚合),而应该使用groupby.sum
输出: