STD(标准差)在Numpy与Pandas中的不同

Ft 2020-10-12 AM 66℃ 0条

在Numpy与Pandas中的标准差求法的不同在于ddof的不同。

ddof:贝塞尔(无偏估计)矫正系数。

在Pandas中的处理:

DataFrame.std(axis=None, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)
→它求的是样本无偏标准差

在Numpy中的处理:

numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<class numpy._globals._NoValue>)
→它求的是样本标准差

numpy.std() 求标准差的时候默认是除以 n 的,即是有偏的,np.std无偏样本标准差方式为加入参数 ddof = 1;
pandas.std() 默认是除以n-1 的,即是无偏的,如果想和numpy.std() 一样有偏,需要加上参数ddof=0 ,即pandas.std(ddof=0) ;DataFrame的describe()中就包含有std();

>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.std(a, ddof = 1)
3.0276503540974917
>>> np.sqrt(((a - np.mean(a)) ** 2).sum() / (a.size - 1))
3.0276503540974917
>>> np.sqrt(( a.var() * a.size) / (a.size - 1))
3.0276503540974917
标签: python

非特殊说明,本博所有文章均为博主原创。

评论啦~