gpt4 book ai didi

python - Pandas:按分位数分组并计算统计数据

转载 作者:行者123 更新时间:2023-12-02 02:49:30 30 4
gpt4 key购买 nike

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

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

如何:

  • 将他们分成3个分位数,“穷人”、“中等”、“富人”,每人33人
  • 计算每个分位数的平均收入

抱歉,这听起来像是一个新手问题。我在学。谢谢!

最佳答案

要按上述方式对列进行分组,您可以使用 Series.quantile ,它允许指定一个分位数序列。然后使用 pd.cut将列拆分为 bin。

然后您可以使用“分位数组”来获取对数据框进行分组的统计信息,如下所示:

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

关于python - Pandas:按分位数分组并计算统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62286471/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com