如何用Python循环从Pandas DataFrame生成多份透视表?
批量生成透视表进行调查数据统计分析问题整理
需求说明
- 从大型数据集中筛选出特定组织的记录集,需批量生成透视表,对比5个多分类人口统计列与17个调查问题的作答情况
- 每个调查问题要生成5份按不同人口统计列分组的透视表,将结果保存为DataFrame后堆叠,用于后续用Matplotlib制作发散堆叠条形图
手动生成透视表的代码实现
有两种可行的手动实现方式:
- 使用
pd.pivot_table:
table18 = pd.pivot_table(org1_df, values='Business size?', index=['Business type?'], columns=['Survey Question 1'], aggfunc=['count'], fill_value=0)
- 使用
pd.crosstab:
cross = pd.crosstab(org1_df["Business type?"], org1_df["Survey Question 2"]) cross
遇到的问题
- 循环生成报错:将人口统计列名存入列表
column_names = ["Business type?", "Business size?"],尝试用字典推导式循环生成透视表时,触发错误:AttributeError: 'str' object has no attribute 'columns' - 参数作用疑惑:在
pd.pivot_table中设置values='Business type?'后,最终透视表结果和Excel输出一致,该参数未对结果产生影响,不清楚原因
预期生成的透视表示例(基于样本数据)
- 按「Business type?」统计Survey Question 1的作答数量
- 按「Business size?」统计Survey Question 1的作答数量
- 按「Business type?」统计Survey Question 2的作答数量
- 按「Business size?」统计Survey Question 4的作答数量
内容的提问来源于stack exchange,提问作者cMX5
相关产品推荐
相关产品推荐

