Python 熊猫:为什么Pandas.Series.std()与numpy.std()有很大不同

Python 熊猫:为什么Pandas.Series.std()与numpy.std()有很大不同,python,numpy,pandas,Python,Numpy,Pandas,我得到两段代码,如下所示 import numpy numpy.std([766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346]) 0 及 这是一个巨大的差异 我可以问一下原因吗?这个问题确实已经在讨论中了();问题似乎是pandas使用的标准偏差计算算法,因为它在数值上不如numpy使用的算法稳定 一个简单的解决方法是首先对序列应

我得到两段代码,如下所示

import numpy
numpy.std([766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346])
0

这是一个巨大的差异


我可以问一下原因吗?

这个问题确实已经在讨论中了();问题似乎是
pandas
使用的标准偏差计算算法,因为它在数值上不如
numpy
使用的算法稳定

一个简单的解决方法是首先对序列应用
.values
,然后对这些值应用
std
;在这种情况下,使用
numpy的
std

pd.Series([766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346]).values.std()

这给了您期望的值0。

这看起来像熊猫中的一个bug。您能在这里发布一个吗?已经报告并回答了:根据问题中的讨论:在修复之前,一个可能的解决方案是确保您安装了瓶颈。我以前注意到算法的不同。在这里,我不认为这是原因。如果你想得到结果“0”,分子应该是“0”。因此,无论是努比还是熊猫,结果都应该是相同的“0”,因为它们之间的差异只是分母。所以我认为这是一个错误,我同意。这就是为什么我将链接发布到讨论和介绍工作的线程。你对这个问题的回答还有什么期待,你会接受吗?:)这个错误是基于所使用的算法(方差和标准差密切相关)。我认为这个错误与算法无关。对于numpy,标准偏差为1/n。对于大熊猫,std的偏差为1/(n-1)。这就是他们算法的不同之处。这里,熊猫的结果是0。对于这个有趣的0,无论哪种算法,它们都应该是相同的。你能看见吗?因为如果A*1/(n-1)=0,那么A*1/n=0。所以我想可能有一些愚蠢的错误在那里,但我很抱歉,我没有时间跟踪。无论如何,非常感谢你的帮助。
pd.Series([766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346]).values.std()