You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Pandas制作含多个自变量的列联表?

生成包含多个自变量的列联表方法

不用分别生成再合并,pandas 提供了直接生成多自变量列联表的方式,分两种场景给你具体实现方法:

场景1:生成多层列结构的多自变量列联表

如果需要展示因变量与多个自变量所有取值组合的频数,可以直接在 pd.crosstab 的 columns 参数里传入多个自变量的列表,生成多层列的交叉表。

示例代码:

import pandas as pd

# 模拟你的样本数据
data = {
    'Dvar': [0, 1, 0, 1, 0, 1],
    'Var1': ['A', 'B', 'A', 'A', 'B', 'A'],
    'Var2': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
    'Var3': ['M', 'F', 'F', 'M', 'M', 'F']
}
table = pd.DataFrame(data)

# 直接传入多个自变量到columns参数
multi_level_crosstab = pd.crosstab(
    index=table['Dvar'],
    columns=[table['Var1'], table['Var2'], table['Var3']]
)
print(multi_level_crosstab)

输出会是一个多层列的表格,每一列对应 Var1、Var2、Var3 的一个取值组合,单元格是该组合下的频数。

场景2:生成并排展示的多自变量列联表

如果希望把每个自变量与因变量的列联表并排合并成一个大表,可以先通过 pd.melt 将数据转成长格式,再做交叉表。

示例代码:

# 将数据转成长格式:把3个自变量合并成"自变量"和"取值"两列
melted_data = pd.melt(
    table,
    id_vars='Dvar',  # 保留因变量作为标识
    value_vars=['Var1', 'Var2', 'Var3'],  # 指定要转换的自变量列
    var_name='自变量名称',
    value_name='取值'
)

# 生成并排的列联表
side_by_side_crosstab = pd.crosstab(
    index=melted_data['Dvar'],
    columns=[melted_data['自变量名称'], melted_data['取值']]
)
print(side_by_side_crosstab)

这种方式的输出会把每个自变量的列联表部分整合在一起,列结构是「自变量名称+取值」,方便对比不同自变量与因变量的分布关系。

内容的提问来源于stack exchange,提问作者YoungboyVBA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 07:25:19