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

Ton*_*ony 7 python numpy pandas

我有两个代码片段如下.

import numpy
numpy.std([766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346])
0
Run Code Online (Sandbox Code Playgroud)

import pandas as pd
pd.Series([766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346]).std(ddof=0)
10.119288512538814
Run Code Online (Sandbox Code Playgroud)

这是一个巨大的差异.

我可以问为什么?

Cle*_*leb 2

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

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

pd.Series([766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346, 766897346]).values.std()
Run Code Online (Sandbox Code Playgroud)

这给你期望值 0。