首页 > 解决方案 > 在 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))

在此处输入图像描述

标签: pythonpandasfacebook-prophet

解决方案


如果没有可重复的数据集,就无法对此进行测试,但是应该这样做。

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'并为每个创建模型


推荐阅读