我正在使用熊猫版本:“ 0.23.4”
在调试我的代码时,我意识到std和skew不能在滚动窗口中给出正确的结果。 检查以下代码:
public function mentorapplication()
{
return $this->hasMany(mentorApplication::class, 'user_id');
}
public function mentorAssigned()
{
return ($this->mentorapplication()->status == "counsellorAssigned");
}
尽管均值的结果相同,但std和skew的结果却不同? 这是预期的行为还是我错过了什么?
答案 0 :(得分:3)
区别在于指定的自由度增量。
Numpy
使用ddof
to be 0 as default,而熊猫使用ddof
to be 1 as default。此值会影响std
的计算方式(具体来说,是如何对其进行规范化,例如参考here)
如果两者都指定为0,则结果相同
s1 = df_w.apply(lambda k: np.std(k, ddof=0), raw=True)
s2 = df_w.std(ddof=0)
>>> (s1==s2).all()
True
类似地,对于skew
,熊猫计算unbiased skewness,而scipy
calculates the biased.
因此,要获得相同的结果,只需在bias=False
中指定scipy
sk1 = df_w.apply(lambda x: sp.skew(x, bias=False))
sk2 = df_w.skew()
>>> (sk1==sk2).all()
True