首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问一列分组数据来对大熊猫进行线性回归?

如何访问一列分组数据来对大熊猫进行线性回归?
EN

Stack Overflow用户
提问于 2019-07-21 13:48:10
回答 1查看 89关注 0票数 0

我想对熊猫的分组数据框架进行线性回归。我正在调用的函数抛出一个我无法解析的KeyError。

我有一个叫做dat的环境数据集,它包括一种化学物质在不同树龄、不同年龄、不同地点、在几个时间步骤中的浓度数据。现在,我想在每一组(地点、物种、年龄)中,随着时间的推移,对注意力进行回归。

这是我的密码:

代码语言:javascript
复制

将熊猫作为pd导入

导入statsmodels.api作为sm

dat = pd.read_csv('data.csv')

dat.head(15)

代码语言:javascript
复制
   SampleName  Concentration     Site Species  Age  Time_steps

0 batch1 2.18德国松1 1

1 batch2 5.19德国松1 2

德国松2 batch3 11.52 1 3

挪威云杉3 batch4 16.64 0 1

挪威云杉4 batch5 25.30 0 2

挪威云杉5 batch6 31.20 0 3

6 batch7 12.63挪威云杉1 1

7 batch8 18.70挪威云杉1 2

8 batch9 43.91挪威云杉1 3

9 batch10 9.41瑞典桦树0 1

10 batch11 11.10瑞典桦树0 2

11 batch12 15.73瑞典桦树0 3

12 batch13 16.87瑞士山毛榉0 1

13 batch14 22.64瑞士山毛榉0 2

瑞士batch15 29.75瑞士山毛榉0 3

def ols_res_grouped(组):

代码语言:javascript
复制
xcols_const = sm.add_constant(group['Time_steps']) 
代码语言:javascript
复制
linmod = sm.OLS(group['Concentration'], xcols_const).fit() 
代码语言:javascript
复制
return linmod.params[1] 

分组=dat.groupby(“站点”、“物种”、“年龄”).agg(Ols_res_grouped)

代码语言:javascript
复制

我想得到Time_steps上浓度数据的回归系数,但得到一个KeyError:'Time_steps‘。sm方法如何访问组“Time_steps”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-22 08:15:14

根据熊猫文献的说法,agg独立地将函数应用于每一列。也许可以使用NamedAgg,但我不确定。

我认为只使用for循环来处理这个问题要容易得多:

代码语言:javascript
复制
for _, group in dat.groupby(['Site','Species','Age']):
    coeff = ols_res_grouped(group)

    # if you want to put the coeff inside the dataframe
    dat.loc[group.index, 'coeff'] = coeff
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57133794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档