创建收入分类变量:按年度百分位划分收入等级
解决方案
可以使用 Pandas 的 groupby 结合 qcut 方法实现按年份分组的收入分箱,具体步骤如下:
- 构造示例 DataFrame(已有数据可跳过此步):
import pandas as pd data = { 'ID': [1,2,3,4,5,6,7,8,9], 'Income': [100,200,300,500,1000,1500,10000,15000,20000], 'Year': [2000,2000,2000,2001,2001,2001,2002,2002,2002] } df = pd.DataFrame(data)
- 按年份分组并生成收入等级列:
# 按Year分组,对每组的Income进行三分位分箱 df['income_cat'] = df.groupby('Year')['Income'].apply( lambda x: pd.qcut(x, q=[0, 1/3, 2/3, 1], labels=['low', 'medium', 'high']) )
- 查看结果:
print(df)
运行后得到的结果与预期输出完全一致:
| ID | Income | Year | income_cat |
|---|---|---|---|
| 1 | 100 | 2000 | low |
| 2 | 200 | 2000 | medium |
| 3 | 300 | 2000 | high |
| 4 | 500 | 2001 | low |
| 5 | 1000 | 2001 | medium |
| 6 | 1500 | 2001 | high |
| 7 | 10000 | 2002 | low |
| 8 | 15000 | 2002 | medium |
| 9 | 20000 | 2002 | high |
关键说明
groupby('Year'):确保每个年份的收入分箱独立计算,不会跨年份干扰。pd.qcut():基于分位数分箱,q=[0, 1/3, 2/3, 1]明确将数据划分为下33%、中间33%、上33%三个区间,labels参数指定对应等级名称。
内容的提问来源于stack exchange,提问作者Schnupfenheld
相关产品推荐
相关产品推荐

