Python 分组a数据帧并按组计算标准化标准偏差?

Python 分组a数据帧并按组计算标准化标准偏差?,python,pandas,Python,Pandas,我有一个数据框,看起来像这样: product cost_per_quantity 12779 0101010G0BB 160.788357 12653 0101010G0BC 179.493956 10390 0101010I0AA 0.425916 20361 0101010I0AA 0.603650 22504 0101010I0AA 0.633082 创建时使用

我有一个数据框,看起来像这样:

           product  cost_per_quantity
12779  0101010G0BB         160.788357
12653  0101010G0BC         179.493956
10390  0101010I0AA           0.425916
20361  0101010I0AA           0.603650
22504  0101010I0AA           0.633082
创建时使用:

df = pd.DataFrame({ 'product': ['0101010G0BB', '0101010G0BC', '0101010I0AA', '0101010I0AA', '0101010I0AA'], 'cost_per_quantity': [160.788357, 179.493956, 0.425916, 0.603650, 0.633082]})
现在,我想找出每件数量的成本变化最大的产品

例如,我想检查产品
0101010I0AA
,找出三个条目中
每单位数量成本的标准偏差,然后将其与其他产品的标准偏差进行比较

最好的方法是什么?我试过:

df1 = df.groupby('product').agg(np.std)

但这只是给了我一堆
NaN
s.

对于聚合
df.groupby('product')。agg(np.std)
是正确的,但对于1-观察组,这返回
NaN
,因为无法计算1-观察组的样本标准偏差。标准偏差的Numpy默认值是总体标准偏差,但我猜熊猫会覆盖它

您可以使用总体标准偏差得到这些组的0

如果您想查看相对于平均值的相对偏差,可以使用:


既然
np.std
在lambda函数中,它的行为与预期一样。

@ayhan谢谢!我认为这是在恢复原始的s.d.,而不是正常化的s.d.,你知道我该如何恢复正常化的s.d。?
df.groupby('product').apply(lambda x: np.std(x) / np.mean(x))