熊猫:为什么pandas.Series.std()与numpy.std()完全不同

时间:2015-07-02 06:02:51

标签: python numpy pandas

我有两个代码段如下。

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

import pandas as pd
pd.Series([766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346]).std(ddof=0)
10.119288512538814

这是一个巨大的差异。

我可以问为什么?

1 个答案:

答案 0 :(得分:2)

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

一个简单的解决方法是先将.values应用于该系列,然后将std应用于这些值;在这种情况下,使用了numpy's std

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

,它给你预期的值0。