python - 如何将 OLS 从 statsmodels 应用到 groupby

标签 python pandas statsmodels

我按月对产品运行 OLS。虽然这适用于单个产品,但我的数据框包含许多产品。如果我创建一个 groupby 对象,OLS 会给出错误。

linear_regression_df:
  product_desc  period_num    TOTALS  
0    product_a     1          53  
3    product_a     2          52 
6    product_a     3          50 
1    product_b     1          44 
4    product_b     2          43 
7    product_b     3          41 
2    product_c     1          36   
5    product_c     2          35 
8    product_c     3          34 


from pandas import DataFrame, Series
import statsmodels.api as sm    

linear_regression_grouped = linear_regression_df.groupby(['product_desc'])
X = linear_regression_grouped['period_num'] 
y = linear_regression_grouped['TOTALS']

model = sm.OLS(y, X)
results = model.fit()

我在 sm.OLS() 行收到这个错误:

ValueError: unrecognized data structures: <class 'pandas.core.groupby.SeriesGroupBy'>

那么我怎样才能遍历我的数据框并为每个 product_desc 应用 sm.OLS()?

最佳答案

你可以做这样的事情......

import pandas as pd
import statsmodels.api as sm

for products in linear_regression_df.product_desc.unique():
    tempdf = linear_regression_df[linear_regression_df.product_desc == products]
    X = tempdf['period_num']
    y = tempdf['TOTALS']

    model = sm.OLS(y, X)
    results = model.fit()

    print results.params #  Or whatever summary info you want

关于python - 如何将 OLS 从 statsmodels 应用到 groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24088439/

相关文章:

python - 扩展 NLP 实体提取

可以同时显示 HTML 和 CSS 的 Python 小部件

python - 我收到错误 "ValueError: endog is required to have ndim 1 but has ndim 2"

python - statsmodels arma(1,0) 与 AR(1) 不匹配

python - 计算python中非线性曲线拟合的确定系数(R2)和均方根误差(RMSE)

python - 从交互式控制台运行代码时无法访问数据库

python - 如何比较 python 中 dict 中特定键的两个列表

Python + Pandas + Spark - 如何将数据框导入 Pandas 数据框并将其转换为字典?

python - 将数组与文件进行比较,并根据数组元素形成组

python-3.x - 找到前三个相关类别及其对应的概率