You need to enable JavaScript to run this app. Python3 pandas分组统计各地点重要性分布及可视化实现方法
优惠活动
大模型
产品
解决方案
定价
更多

Python3 pandas分组统计各地点重要性分布及可视化实现方法

结构化统计结果整理方法

现有聚合结果的可优化点

你当前的聚合输出存在两个实际使用中的问题:

  • 重复计算:对agent、count两个列分别计算了样本数,实际返回值完全一致,属于冗余信息
  • 缺失值未补全:不存在的分组(比如London下没有Medium重要等级的样本)直接被省略,没有统一补0,后续计算和展示会出现断档

具体整理步骤

  1. 精简聚合逻辑,直接获取分组计数
    不用对多列做size计算,直接用groupby的size方法拿到每组的样本数即可:

    # 生成分组计数长表
    grouped = data.groupby(['location', 'importance']).size().reset_index(name='sample_count')
    
  2. 转换为宽表结构,补全缺失分组
    用pivot方法把嵌套在索引里的importance维度转成列,缺失值统一填充为0,同时手动调整列的顺序为High/Medium/Low,避免字母排序导致的列顺序混乱:

    structured_df = grouped.pivot(
        index='location',
        columns='importance',
        values='sample_count'
    ).fillna(0).astype(int)
    # 固定重要等级列的展示顺序
    structured_df = structured_df[['High', 'Medium', 'Low']]
    

    更简洁的实现可以直接用unstack一步完成长表转宽表,效果和pivot完全一致:

    structured_df = data.groupby(['location', 'importance']).size().unstack(fill_value=0)[['High', 'Medium', 'Low']]
    

    最终输出的结构化表效果如下:

    locationHighMediumLow
    London102
    Melbourne102
    NYC220
适配性可视化方案

针对这个三维交叉的统计结果,最直观的展示方式有两种:

  • 堆叠柱状图(优先推荐):可以同时展示每个地点的总样本量、不同重要等级的内部构成
    直接调用pandas内置绘图接口即可,无需额外复杂配置:
    import matplotlib.pyplot as plt
    # 配置绘图样式避免中文乱码
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    # 生成堆叠柱状图
    structured_df.plot(
        kind='bar',
        stacked=True,
        figsize=(8, 5),
        title='各地点不同重要等级的样本分布'
    )
    plt.ylabel('样本数量')
    plt.xlabel('地点')
    plt.xticks(rotation=0)
    plt.tight_layout()
    plt.show()
    
  • 分组柱状图:如果需要横向对比不同地点下同一重要等级的样本量,只需要把上述代码里的stacked=True改为stacked=False即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 14:15:09