python patsy中的分组因素

时间:2015-10-08 21:51:54

标签: pandas statsmodels patsy

这是this older SO question的扩展,但是对于python而不是R.我也认为这个解决方案并不是最好的。

假设我的数据看起来像这样......

State   Y
AL      5
AK      10
AZ      8

我想编写一个patsy公式来将State转换为Region,然后使用statsmodels使用Region进行预测。所以表格看起来像......

State   Region    Y
AL      Southeast 5
AK      Northwest 10
AZ      Southwest 8

我希望有一个功能

model = sm.OLS('Y ~ C(State, StateToRegionGrouping)').fit()

我认为有两种方法。首先,在原始数据上添加一个查找列,或者为patsy编写一个分类变换器函数来处理。

哪种方式更好,如果patsy分类变换器更好,有什么好的方法来编程呢?

1 个答案:

答案 0 :(得分:1)

保持简单,只需使用字典映射:

import statsmodels.formula.api as smf

mapping = {'AL': 'Southeast',
           'AK': 'Northwest',
           'AZ': 'Southwest'}

df = pd.DataFrame({'State': ['AL', 'AK', 'AZ'], 'Y': [5, 10, 8]})
df['Region'] = df.State.map(mapping)

>>> df
  State   Y     Region
0    AL   5  Southeast
1    AK  10  Northwest
2    AZ   8  Southwest

model = smf.ols('Y ~ Region', data=df).fit()