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

如何用Pandas从DataFrame构建布宜诺斯艾利斯地区分类交叉表?

用Pandas优雅生成带总计的分类交叉统计表

需求背景

现有包含阿根廷布宜诺斯艾利斯省地区数据的Pandas DataFrame,需基于REGION(NORTE/SUR)和PERTENENCIA(GBA/INTERIOR)两个分类列,统计各组合下的地区数量,并生成带行/列总计的交叉表(格式如示例所示)。

解决方案

直接使用Pandas的pd.crosstab()函数,配合参数自动生成总计,无需手动计算:

import pandas as pd

# 假设你的DataFrame名为df
cross_table = pd.crosstab(
    index=df['REGION'],
    columns=df['PERTENENCIA'],
    margins=True,       # 启用行/列总计
    margins_name='TOTAL'# 总计行/列的名称
)

# 调整列顺序以匹配期望格式
cross_table = cross_table[['GBA', 'INTERIOR', 'TOTAL']]

# 输出结果
print(cross_table)

结果说明

执行后会直接生成符合要求的交叉表:

GBA  INTERIOR  TOTAL
REGION                    
NORTE   33        41     74
SUR      0        67     67
TOTAL   33       108    141

关键参数解释

  • pd.crosstab():Pandas专门用于生成分类交叉统计表的工具,默认统计每个分类组合的出现频次(即地区数量)。
  • margins=True:自动为每行、每列添加总计值。
  • margins_name='TOTAL':指定总计行/列的名称为TOTAL。

可视化适配

生成的交叉表可直接用于后续可视化:

  • 堆叠柱状图:cross_table.drop('TOTAL').plot(kind='bar', stacked=True)
  • 嵌套饼图:可基于行总计(NORTE/SUR)和列内细分(GBA/INTERIOR)的数据结构直接构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:39:30