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

如何在Pandas(Python)中对年龄分组并生成职业资格频率表

解决方案

我们可以用Pandas的pd.cut()完成年龄区间分组,再通过分组聚合获取每个组中出现次数最多的职业资格,具体步骤如下:

1. 导入依赖并构造DataFrame

import pandas as pd

# 构造目标数据
data = {
    '年龄': [45, 49, 29, 61, 45, 37, 17, 56, 47],
    '职业资格': ['体力劳动者', '体力劳动者', '体力劳动者', '体力劳动者', '体力劳动者', '体力劳动者', '办公室职员', '体力劳动者', '办公室职员']
}
df = pd.DataFrame(data)

2. 定义年龄区间并完成分组

指定你需要的区间边界,注意区间的开闭规则:

# 定义区间边界,对应(,17)、(17,29)、(30,40)、(40,50)、(50,)
bins = [-float('inf'), 17, 29, 40, 50, float('inf')]
labels = ['(,17)', '(17,29)', '(30,40)', '(40,50)', '(50,)']

# 为年龄列添加分组标签
df['年龄组'] = pd.cut(df['年龄'], bins=bins, labels=labels, include_lowest=True)

3. 聚合获取每组的众数职业资格

通过groupby()结合mode()提取每个组中出现次数最多的职业资格:

# 分组后取职业资格的众数,若存在多个众数则取第一个
result = df.groupby('年龄组')['职业资格'].agg(lambda x: x.mode()[0]).reset_index()

# 重命名列名匹配示例格式
result.columns = ['年龄', '职业资格']

# 输出最终结果
print(result)

执行后得到的结果如下:

年龄职业资格
(,17)办公室职员
(17,29)体力劳动者
(30,40)体力劳动者
(40,50)体力劳动者
(50,)体力劳动者

补充说明

  • pd.cut()的include_lowest=True参数确保17岁被划分到(,17)区间
  • mode()[0]保证在组内出现多个众数时,默认取第一个结果,满足需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:15:54