You need to enable JavaScript to run this app. 按省份分组计算DataFrame中profession列为'teacher'的条目占比
优惠活动
大模型
产品
解决方案
定价
更多

按省份分组计算DataFrame中profession列为'teacher'的条目占比

Pandas按组计算指定职业占组内总条目比例的实现方法

groupby 后调用 value_counts 时传入 normalize=True 参数,默认就是按当前分组的总条目数计算占比,不会使用全局统计值,刚好匹配你的需求。

实现代码

第一步:构造示例测试数据

import pandas as pd

df = pd.DataFrame({
    'province': ['北京', '北京', '北京', '上海', '上海', '广东', '广东', '广东', '广东'],
    'profession': ['teacher', 'doctor', 'teacher', 'teacher', 'engineer', 'doctor', 'teacher', 'teacher', 'lawyer']
})

方法1:基于value_counts的简洁实现

# 分组后计算组内各职业占比,筛选teacher的占比并转成百分比格式
result = df.groupby('province')['profession'].value_counts(normalize=True).loc[:, 'teacher'] * 100
# 格式化输出,保留2位小数
result = result.round(2).reset_index(name='teacher占比(%)')
print(result)

方法2:基于自定义规则的灵活实现

适合需要扩展统计规则的场景,逻辑更直观

result = df.groupby('province').apply(
    lambda x: (x['profession'] == 'teacher').sum() / len(x) * 100
).round(2).reset_index(name='teacher占比(%)')
print(result)

输出示例

两种方法的输出完全一致:

province  teacher占比(%)
0       北京          66.67
1       上海          50.00
2       广东          50.00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 14:15:05