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

如何用Pandas将99人年收入按分位数分组并计算各组均值

划分收入分位组并计算组内平均收入的解决方案

嘿,我来帮你搞定这个问题!你已经生成了99个基于三角分布的收入数据,现在要把它们分成三等分的分位组(每组33人),再计算每组的平均收入对吧?咱们一步步来实现:

步骤1:生成并确认数据

首先运行你提供的数据生成代码,也可以额外查看下数据的基本结构,确保没问题:

import pandas as pd
import random

# 生成99个收入数据
incomes = pd.DataFrame({'income':[round(random.triangular(20,80,200),0) for i in range(99)]})

# 查看前5条数据,确认数据结构
print(incomes.head())

步骤2:按数量均分划分分位组

这里推荐用pandas的qcut()函数,它能按数据的分位数将数据分成等数量的组,正好符合你每组33人的需求。我们直接给三个组命名为「贫困」「中等」「富裕」:

# 将收入数据分成3个等数量的分位组
incomes['group'] = pd.qcut(incomes['income'], q=3, labels=['贫困', '中等', '富裕'])

简单解释下:q=3表示分成3个分位,因为总共有99条数据,99/3=33,所以每组正好33人;labels参数用来指定每个组的名称,让结果更直观。

步骤3:验证分组数量并计算组内平均收入

先验证下每组的人数是否都是33,确保分组正确:

# 查看每组的人数
print("每组人数:")
print(incomes['group'].value_counts())

然后就可以按组计算平均收入了,用groupby()分组后取均值即可:

# 计算每个分位组的平均收入(保留两位小数)
group_average_income = incomes.groupby('group')['income'].mean().round(2)

print("\n各分位组平均收入:")
print(group_average_income)

完整可运行代码

把上面的步骤整合起来,你可以直接复制运行:

import pandas as pd
import random

# 生成数据
incomes = pd.DataFrame({'income':[round(random.triangular(20,80,200),0) for i in range(99)]})

# 划分分位组
incomes['group'] = pd.qcut(incomes['income'], q=3, labels=['贫困', '中等', '富裕'])

# 验证分组人数
print("每组人数:")
print(incomes['group'].value_counts())

# 计算组内平均收入
group_average_income = incomes.groupby('group')['income'].mean().round(2)
print("\n各分位组平均收入:")
print(group_average_income)

这样你就能得到每个分位组的平均收入啦,要是有其他疑问随时问!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:12:32