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

Python 与手动计算std相比,Pandas pd.Series().var()函数给出的输出不同。知道什么';这里出什么事了?,python,pandas,numpy,variance,Python,Pandas,Numpy,Variance,我试图手动计算标准偏差,而不是使用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.s

我试图手动计算标准偏差,而不是使用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))
print(np.sqrt(pd.Series(values['col_name'].astype(np.float64)).var()))
输出1-10773.042044307498


差异计算

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))
print(np.sqrt(pd.Series(values['col_name'].astype(np.float64)).var()))
输出2-10773.042044307516

尝试从pandas.core.nanops复制pandas nanvar函数,但仍仅获得输出1

熊猫==1.0.1 numpy==1.17.0


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

这是因为一个名为瓶颈的库,熊猫使用它来加快计算速度。由于pandas将其与默认设置一起使用,因此现在关闭它将导致相同的输出。

浮点数具有有限的精度,您在这里遇到了限制。看到了吧,这是因为一个叫做瓶颈的库,熊猫用它来加快计算速度。由于pandas将其与默认设置一起使用,因此现在禁用它将导致相同的输出。但是非常感谢你的努力考虑把这篇文章作为你自己问题的答案。然后,它可以作为遇到相同问题的人的参考。好奇你在做什么,0.00000000 1%的精度有什么关系?正在处理从lgbm生成的匹配预测。测试集中的一些列具有从pandas函数生成的值,这些函数现在在部署API上耗费了我的时间复杂性。尝试使用numpy和动态规划来减少它。这些精度损失正在影响树的分割点,因此预测无法匹配。我不确定如何进行匹配,但这可能对您有用: