python - 在 Python 中如何使用 Pandas 操作 Prophet 的输出
问题描述
Python 新手,希望能帮助 Pandas 处理 Prophet 库的输出(参见图片)。我的输入 Dataframe 有 3 列,Prophet 只需要 2 列,我的输出是 4 列。是否还有一种方法可以循环返回并为操作员 5 和 6 运行相同的操作,还是我需要将它们按顺序添加到代码中?在此先感谢您的帮助。加夫
import pandas as pd
from fbprophet import Prophet
df = pd.read_csv('C:\path\myfile.csv')
df.columns = ['Operator','ds','y']
df['ds'] = pd.to_datetime(df['ds'])
dfprop=df[df['Operator']==1]
dfprop=dfprop[['ds','y']]
m = Prophet()
m.fit(dfprop)
future = m.make_future_dataframe(periods=158)
forecast = m.predict(future)
forecast
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail(158)
dfout = df.append(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail(158))
解决方案
如果没有可重复的数据集,就无法对此进行测试,但是应该这样做。
import pandas as pd
from fbprophet import Prophet
df = pd.read_csv('C:\path')
df.columns = ['Operator','ds','y']
df['ds'] = pd.to_datetime(df['ds'])
def forecast_data(g):
data = g[['ds','y']]
m = Prophet()
m.fit(data)
future = m.make_future_dataframe(periods=158)
forecast = m.predict(future)
forecast['Operator'] = g['Operator'].iloc[0]
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail(158)
dfout = g.append(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail(158))
return dfout
df.groupby('Operator').apply(forecast_data)
应用于组'Operator'
并为每个创建模型
推荐阅读
- php - 模型的属性如何在 Livewire Laravel 中默认为原始属性
- html - 在根而不是文档中添加 CSS 变量(自定义属性)
- docker - 如何在 docker laravel 容器中监控和列出请求率(命中率)
- audio - 设置持续时间时 AudioBufferSourceNode 不循环
- python - Python(matplotlib):单击时突出显示 x 轴间隔
- javascript - 是否有指向自己的类的自指针?
- c - 如何在 LLVM C 中将 int 转换为浮点数?
- google-sheets - 谷歌表格公式根据条件添加列名作为列条目
- reactjs - Redux mapStateToProps 到类反应组件
- java - 在加入操作中使用实体 ID 时调用 JPA PreUpdate