Python 识别和计算数据帧中前x个对象的统计信息

Python 识别和计算数据帧中前x个对象的统计信息,python,pandas,dataframe,group-by,Python,Pandas,Dataframe,Group By,嗨,我有一个数据框,如下所示: product ID fees % fees quantity % quantity avg. price/item 0 ABB 4000 6% 651 5% 100 1 AXX 2500 5% 425 4% 110 2 ACC 2000 5%

嗨,我有一个数据框,如下所示:

    product ID  fees    % fees  quantity    % quantity  avg. price/item
0   ABB         4000    6%       651           5%            100
1   AXX         2500    5%       425           4%            110
2   ACC         2000    5%       538           4%            90
3   ADD         1500    4%       217           3%            80
4   AEE         1300    4%       192           3%            120
dataframe是按每个产品的费用(从高到低)订购的,我在dataframe中有4000个产品

我想做的是创建3个桶:用于产品1-10、11-1000、1001+。对于每个桶,我想计算总费用百分比、总数量百分比以及该桶平均价格的数量加权平均值

我知道如何使用groupby来实现这一点,如果我已经将行标记为它们所属的bucket(那么我可以根据包含bucket标签的列进行分组并计算统计数据)


关于如何用bucket标识符最好地标记每一行,您有什么想法吗?如果有一个不太步行的方式这样做,没有标签行,请让我知道

我冒昧地对您的数据进行了一些更改,使其跨越所有可能的范围和标签。 df:

要标记数据,需要使用

df['label'] = pd.cut(df['fees'], [1, 10, 1000, np.inf], labels=[1,2,3])
输出:

   product ID  fees % fees quantity % quantity avg. price/item label
0        ABB    40     6%      651         5%             100     2
1        AXX     2     5%      425         4%             110     1
2        ACC  2000     5%      538         4%              90     3
3        ADD   150     4%      217         3%              80     2
4        AEE  1300     4%      192         3%             120     3
然后,正如您所提到的,您可以简单地使用标签对数据进行分组,并使用groupby执行统计


请注意,
[1,10,1000,np.inf]
定义了
箱子
,而
[1,2,3]
是箱子的标签

那么,存储桶是否仅基于数据框中的索引?请定义计算:总费用百分比。。。出于什么原因?我想可能是被
df.index
削减了,因为
DataFrame
已经被排序了,而且这个问题要求“top X”对象。似乎
cut
需要根据产品排名,而不是费用金额。然后再运行聚合。
   product ID  fees % fees quantity % quantity avg. price/item label
0        ABB    40     6%      651         5%             100     2
1        AXX     2     5%      425         4%             110     1
2        ACC  2000     5%      538         4%              90     3
3        ADD   150     4%      217         3%              80     2
4        AEE  1300     4%      192         3%             120     3