pandas vs numpy中的不同std

332nm8kg  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(112)

pandas和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

字符串
我使用这些版本:

pandas '0.14.0'
numpy '1.8.1'

v1uwarro

v1uwarro1#

简而言之,两者都不是“不正确”。Pandas使用unbiased estimator(分母为N-1),而Numpy默认情况下不使用。
要使它们的行为相同,请将ddof=1传递给numpy.std()
有关进一步讨论,请参见

  • 总体方差和样本方差。
htzpubme

htzpubme2#

要使pandas的执行与numpy相同,可以传入ddof=0参数,因此df.std(ddof=0)
这个简短的视频很好地解释了为什么n-1可能是首选的示例。https://www.youtube.com/watch?v=Cn0skMJ2F3c

相关问题