大熊猫和numpy之间的标准偏差不同。为什么和哪一个是正确的? (相对差异为3.5%,不应该来自四舍五入,我认为这很高)。
示例
import numpy as np
import pandas as pd
from StringIO import StringIO
a='''0.057411
0.024367
0.021247
-0.001809
-0.010874
-0.035845
0.001663
0.043282
0.004433
-0.007242
0.029294
0.023699
0.049654
0.034422
-0.005380'''
df = pd.read_csv(StringIO(a.strip()), delim_whitespace=True, header=None)
df.std()==np.std(df) # False
df.std() # 0.025801
np.std(df) # 0.024926
(0.024926 - 0.025801) / 0.024926 # 3.5% relative difference
我使用这些版本:
熊猫: '0.14.0' numpy的: '1.8.1'
答案 0 :(得分:34)
简而言之,两者都不是“不正确”。 Pandas使用unbiased estimator(分母中的N-1
),而Numpy默认不使用。
要使它们的行为相同,请将ddof=1
传递给numpy.std()
。
有关进一步的讨论,请参阅
答案 1 :(得分:0)
要使pandas
的性能与numpy
相同,您可以传入ddof=0
参数,因此df.std(ddof=0)
。
这段简短的视频很好地说明了为什么n-1
可能更适合作为示例。 https://www.youtube.com/watch?v=Cn0skMJ2F3c