我遇到pandas.groupby()
的以下问题:我有一个可以分为几组的数据集,但是当我计算标准差时,根据使用groupby()
还是使用import numpy as np
import pandas as pd
df = pd.DataFrame({
'data': np.append(np.random.normal(1,1,10),np.random.normal(-1,1,10)),
'type': np.append(np.ones(10), 2*np.ones(10))
})
,我得到不同的结果。手动拆分组。
这是一个有效的示例:
groupby()
(下面,如果要精确复制,请粘贴实际值。)
这就是我使用df.groupby('type').std()
data
type
1.0 0.670406
2.0 1.235369
的结果:
type==1
这就是我要手动计算np.std(df[ df.type==1 ].data)
0.6360030713759871
的标准偏差的原因:
0.670
我真的不知道发生了什么,任何人都可以解释一下吗?
为什么我在第一种情况下得到0.636
而在第二种情况下得到groupby().std()
?
我无法理解这些值的不同之处,因为numpy.std()
应该在后台运行df.values
array([[ 2.1472923 , 1. ],
[ 1.92915175, 1. ],
[ 2.94089156, 1. ],
[ 1.88584446, 1. ],
[ 0.69798067, 1. ],
[ 1.56013451, 1. ],
[ 2.83390388, 1. ],
[ 1.57214222, 1. ],
[ 1.41883281, 1. ],
[ 1.50841901, 1. ],
[-1.43944992, 2. ],
[-0.57068851, 2. ],
[-1.67287795, 2. ],
[-2.14790187, 2. ],
[-0.01767844, 2. ],
[-1.11745803, 2. ],
[-2.25692655, 2. ],
[ 0.38472557, 2. ],
[-0.57914187, 2. ],
[ 1.73321436, 2. ]])
,对吧?
/profile