我正在尝试使用groupby和np.std来计算标准偏差,但似乎正在计算样本标准偏差(自由度等于1)。
这是一个样本。
#create dataframe
>>> df = pd.DataFrame({'A':[1,1,2,2],'B':[1,2,1,2],'values':np.arange(10,30,5)})
>>> df
A B values
0 1 1 10
1 1 2 15
2 2 1 20
3 2 2 25
#calculate standard deviation using groupby
>>> df.groupby('A').agg(np.std)
B values
A
1 0.707107 3.535534
2 0.707107 3.535534
#Calculate using numpy (np.std)
>>> np.std([10,15],ddof=0)
2.5
>>> np.std([10,15],ddof=1)
3.5355339059327378
是否可以通过groupby语句使用总体std计算(ddof = 0)?我使用的记录不是(不是上面的示例表)不是样本,所以我只对总体标准偏差感兴趣。
您可以np.std
在agg
函数中传递其他args到:
In [202]:
df.groupby('A').agg(np.std, ddof=0)
Out[202]:
B values
A
1 0.5 2.5
2 0.5 2.5
In [203]:
df.groupby('A').agg(np.std, ddof=1)
Out[203]:
B values
A
1 0.707107 3.535534
2 0.707107 3.535534
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句