栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python Pandas:如何按组运行多个单变量回归

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python Pandas:如何按组运行多个单变量回归

您传递给的函数

apply
必须以a
pandas.Dataframe
作为第一个参数。您可以将其他关键字或位置参数
apply
传递给该参数或传递给应用函数。因此,您的示例将进行少量修改即可工作。更改
ols_res

def ols_res(df, xcols,  ycol):    return sm.OLS(df[ycol], df[xcols]).fit().predict()

然后,你可以使用

groupby
apply
喜欢这个

df.groupby('grp').apply(ols_res, xcols=['x1', 'x2'], ycol='y')

要么

df.groupby('grp').apply(ols_res, ['x1', 'x2'], 'y')

编辑

上面的代码并 没有 运行多个 单变量 回归。相反,它每组运行一个 多元 回归。但是(稍作修改)它将实现。

def ols_res(df, xcols,  ycol):    return pd.Dataframe({xcol : sm.OLS(df[ycol], df[xcol]).fit().predict() for xcol in xcols})

编辑2

虽然上述解决方案有效,但我认为以下内容更实用-

import statsmodels.api as smimport pandas as pdimport numpy as npdf = pd.Dataframe({  'y': np.random.randn(20),  'x1': np.random.randn(20),   'x2': np.random.randn(20),  'grp': ['a', 'b'] * 10})def ols_res(x, y):    return pd.Series(sm.OLS(y, x).fit().predict())df.groupby('grp').apply(lambda x : x[['x1', 'x2']].apply(ols_res, y=x['y']))

由于某种原因,如果我

ols_res()
按原样定义,则结果
Dataframe
在索引中没有组标签。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647910.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号