这就是我试图解释的:
>>> a = pd.Series([7, 20, 22, 22])
>>> a.std()
7.2284161474004804
>>> np.std(a)
6.2599920127744575
我有许多不同餐馆的数据。为了简单起见,我只提取了一家餐厅的四个项目:
>>> df
restaurant_id price
id
1 10407 7
3 10407 20
6 10407 22
13 10407 22
对于每个餐厅,我想得到标准差,但是Pandas返回错误的值。
>>> df.groupby('restaurant_id').std()
price
restaurant_id
10407 7.228416
我们可以用np.std()
得到正确的值:
>>> np.std(df['price'])
6.2599920127744575
但很明显,当我有不止一家餐厅时,这不是一个解决方案。我该如何正确地做到这一点?
为了确认,我检查了df['price'].mean() == np.mean(df['price'])
。
有一个相关的讨论here,但他们的建议也不起作用。
1条答案
按热度按时间hfsqlsce1#
Pandas std默认使用Bessel's correction--也就是说,标准差公式的分母是
N-1
而不是N
。使用N-0
: