Python按组创建线性回归预测pandas数据帧

标签 python dataframe linear-regression

我想创建一个基于线性回归循环的 python pandas 数据框列

这是源数据 pandas dataframe df:

campaign    |     date     |    shown 
   A           2015-10-11       363563
   A           2015-10-12       345657
   A           2015-10-13       345346
   B           2015-10-11       23467
   B           2015-10-15       357990
   C           2015-10-11       97808

我想使用线性回归,并为每个组预测 2015 年 11 月 30 日显示的金额。

所以这是我正在寻找的最终新预测数据框:

 campaign |   Prediction(2015-11-30)
      A           ...
      B           ...
      C           ...

到目前为止我的代码:

df['date_ordinal'] = df['date'].apply(lambda x: x.toordinal())
model = LinearRegression()
X = df[['date_ordinal']]
y = df.shown
model.fit(X, y)   

df_results = pd.DataFrame()
for (group, df_gp) in df.groupby('campaign'):
   df_results['campaign'] = group
   X=df_gp[['date_ordinal']]
   y=df_gp.shown
   model.fit(X,y)
   coefs = list(zip(X.columns, model.coef_))
   df_results['prediction'] = model.predict(735947)

df_results

但是,当我运行此代码时,我只得到一个预测,我没有得到具有一列“组”及其旁边的预测值的数据帧。

谢谢!

最佳答案

试试这个:

groups = []
results = []
for (group, df_gp) in df.groupby('campaign'):
    X=df_gp[['date_ordinal']]
    y=df_gp.shown
    model.fit(X,y)
    coefs = list(zip(X.columns, model.coef_))
    results.append(model.predict(735947)[0])
    groups.append(group)

df_results = pd.DataFrame({'campaign':groups, 'prediction':results})

根据此处的答案:add one row in a pandas.DataFrame逐行添加行并不是最有效的解决方案。正如您在答案中看到的那样,数据必须插入到索引处。

关于Python按组创建线性回归预测pandas数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41727110/

相关文章:

python - 更改 Pandas 数据框中一列中的所有值

python - 为什么 polars 被称为最快的 dataframe 库,dask 和 cudf 不是更强大吗?

python - 使用 python 使用 sklearn 进行线性回归

python - 为什么在线性回归中创建矩阵的逆时,numpy.linalg.pinv() 优于 numpy.linalg.inv()

python - Selenium python element.screenshot() 不工作

python - 使用 Python 计算一组中任意两个字符串之间的最大距离

python - Python全局变量问题

python - 如何根据 Pandas Python 中特定列中的重复值检索行?

java - 预测轨迹路径点的最佳方法

python - 启动一个新进程并读取该进程的输出