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

如何用Python for循环批量执行函数生成调研题统计透视表

问卷多题批量透视统计实现方案

核心逻辑是把你已写好的单题统计逻辑封装为参数化函数,循环遍历所有问题列批量生成结果,完全兼容你原有计算规则,不需要重构核心代码。

具体实现

  • 把单题计算逻辑中硬编码的题名列替换为函数入参,同时调整列名层级匹配预期输出格式
  • 手动指定或通过规则自动筛选需要统计的问题列范围
  • 循环调用函数逐题生成结果,按格式打印输出

完整可运行代码如下:

import pandas as pd

def generate_single_q_stats(input_df, q_column_name):
    # 完全复用原有pivot_table计数逻辑
    pivot_count = input_df.pivot_table(
        index=q_column_name,
        columns='Gender',
        values='ID',
        aggfunc='count',
        fill_value=0
    )
    # 计算答题占比
    pivot_pct = pivot_count.div(pivot_count.sum(axis=1), axis=0).mul(100)
    # 合并计数、占比数据,匹配#Res(人数)、%Rep(占比)的输出结构
    final_table = pd.concat(
        [pivot_count, pivot_pct],
        axis=1,
        keys=['#Res', '%Rep']
    )
    final_table.index.name = q_column_name
    return final_table

# 要统计的问题列列表,题量多的时候可以用规则自动生成,不用手动枚举:
# q_list = [col for col in df.columns if col.startswith('Q')]
q_list = ['Q1', 'Q2', 'Q3']

# 逐题生成结果并打印
for q in q_list:
    print(generate_single_q_stats(df, q))
    print('\n')

效果说明

运行后输出格式和预期完全一致:每道题单独成块,分别展示不同性别分组下的答题人数、答题占比,题块之间用空行分隔。如果后续新增问题,只需要把问题列名加入q_list即可,不需要修改统计逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:57:07