熊猫:按分位数分组并计算统计信息

时间:2020-06-09 15:45:03

标签: python pandas grouping quantile

我有99个人的年收入数据:

import pandas, random
incomes = pandas.DataFrame({'income':[round(random.triangular(20,80,200),0) for i in range(99)]}) 

方法:

  • 将它们分为3个分位数:“贫困”,“中等”,“有钱”,每33个人
  • 计算每个分位数的平均收入

对不起,听起来像是一个新手问题。我在学。谢谢!

1 个答案:

答案 0 :(得分:3)

要对列进行分组,可以使用Series.quantile,它可以指定分位数的序列。然后使用pd.cut将列拆分为垃圾箱。

然后,您可以使用“分位数组”获得将数据框分组如下的统计信息:

quant = incomes.income.quantile(q=[0,0.33,0.66,1]).values
incomes['groups'] = pd.cut(incomes.income, quant, labels=["poor", "middle", "rich"])
incomes['avg_income'] = incomes.groupby('groups').transform('mean')

或者,如@allolz所提到的,您可以使用qcut来完成上述步骤:

incomes['groups'] = pd.qcut(incomes.income, 3, labels=['poor', 'medium', 'rich'])

print(incomes)

    income  groups  avg_income
0     96.0  middle   89.312500
1     77.0    poor   53.531250
2     93.0  middle   89.312500
3     86.0  middle   89.312500
4     59.0    poor   53.531250
..     ...     ...         ...
94    29.0    poor   53.531250
95   121.0    rich  112.823529
96    87.0  middle   89.312500
97   111.0    rich  112.823529
98    55.0    poor   53.531250