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