在Pandas for Python中包含Winsorize数据

时间:2012-07-02 13:55:35

标签: python regression pandas

我正在尝试在pandas中为Python运行Winsorized回归。 very helpful user manual提供了此示例代码:

winz = rets.copy()
std_1year = rolling_std(rets, 250, min_periods=20)
cap_level = 3 * np.sign(winz) * std_1year
winz[np.abs(winz) > 3 * std_1year] = cap_level
winz_model = ols(y=winz['AAPL'], x=winz.ix[:, ['GOOG']],window=250)

第四行对我来说不对:RHS不应该是cap_level[np.abs(winz) > 3 * std_1year]吗?

感谢您的帮助!我还是新手使用Pandas数据框,并希望确保我理解正确。

1 个答案:

答案 0 :(得分:2)

编辑:抱歉,误解了这个问题!

对大多数类型来说,这是错误的;但是pandas.DataFrame特别支持使用布尔掩码设置值;它将从RHS中选择相应的值和相应的时间值。在引擎盖下,它正在使用np.putmask

您可以自己检查:

>>> df = pandas.DataFrame(np.linspace(0.0, 1.0, 10).reshape(5, 2))
>>> df[df > 0.5] = -df
>>> df
          0         1
0  0.000000  0.111111
1  0.222222  0.333333
2  0.444444 -0.555556
3 -0.666667 -0.777778
4 -0.888889 -1.000000