Pandas pd.Series().var() 函数与手动计算 std 相比给出不同的输出。知道这里出了什么问题吗?

Pandas pd.Series().var() function is giving different output when compared with calculating std manually. Any Idea what's happening wrong here?

我正在尝试手动计算标准偏差,而不是使用 pandas.Series().std() 方法,但输出结果有所不同。请帮忙。

手动方差计算

values = pd.read_csv('Values.csv')

mom_1 = pd.Series(values['col_name'].mean() - values['col_name'])

mom_2 = mom_1*mom_1

print(np.sqrt(np.sum(mom_2.values,dtype = np.float64)/ values.shape[0] - 1))

输出 1 - 10773.042044307498


Pandas方差计算

print(np.sqrt(pd.Series(values['col_name'].astype(np.float64)).var()))

输出 2 - 10773.042044307516

尝试从 pandas.core.nanops pandas nanvar implementaton line 711 but still getting output 1 only. find the Values.csv here

复制 pandas nanvar 函数

pandas==1.0.1 numpy==1.17.0

知道这里出了什么问题吗?

这是因为一个名为 bottleneck 的库,pandas 用于更快的计算。由于 pandas 使用默认设置,现在关闭它会产生相同的输出。