nee*_*hiv 5 python statistics numpy pandas
我试图使用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
Run Code Online (Sandbox Code Playgroud)
有没有办法使用群体标准计算(ddof = 0)和groupby语句?我使用的记录不是(不是上面的示例表)不是样本,所以我只对群体标准偏差感兴趣.
EdC*_*ica 14
您可以np.std在agg函数中传递其他参数:
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
Run Code Online (Sandbox Code Playgroud)
为了degree of freedom = 0
(这意味着只有一个数字的垃圾箱最终会出现std=0而不是NaN)
import numpy as np
def std(x):
return np.std(x)
df.groupby('A').agg(['mean', 'max', std])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12726 次 |
| 最近记录: |