如何使用python中的fbProphet在熊猫数据框中的多个列上执行分组依据并预测将来的值?

时间:2019-04-21 13:50:06

标签: python-3.x pandas group-by aggregate facebook-prophet

我的数据框如下所示。我正在尝试根据aggregate(sum)数据框中显示的日期和组来pandas我的金额列。我能够成功aggregate专栏。但是,我不确定如何传递fbprophet来根据分组日期和分组来预测将来的值。以下是聚合代码。 注意:我是python的初学者,请提供解释和代码。

数据框

import pandas as pd
data = {'Date':['2017-01-01', '2017-01-01','2017-01-01','2017-01-01','2017-01-01','2017-01-01','2017-01-01','2017-01-01',
               '2017-02-01', '2017-02-01','2017-02-01','2017-02-01','2017-02-01','2017-02-01','2017-02-01','2017-02-01'],'Group':['A','A','B','B','C','C','D','D','A','A','B','B','C','C','D','D'],
       'Amount':['12.1','13.2','15.1','10.7','12.9','9.0','5.6','6.7','4.3','2.3','4.0','5.6','7.8','2.3','5.6','8.9']}
df = pd.DataFrame(data)

到目前为止,代码已尝试:

grouped = df.groupby(['Group','Date'])[['Amount']].sum()

1 个答案:

答案 0 :(得分:1)

您遇到了一些问题。

数字

data初始化的第三行应该传入float,而不是str。 消除引号。 或者,可以解决此问题:

'Amount':[float(n) for n in ['12.1','13.2','15.1','10.7','12.9','9.0','5.6','6.7','4.3','2.3','4.0','5.6','7.8','2.3','5.6','8.9']]}

我们这样做是因为您真的不希望.sum()合并为12.1和13.2 并提出'12.113.2'。 您更喜欢25.3

索引

您计算出的grouped对象看起来很不错, 但是如果您检查.dtypes属性,则会看到 它仅向Facebook先知提供Amount列。 要解决此问题,请使用.reset_index()

>>> grouped.reset_index(inplace=True)
>>> grouped.dtypes
Group     object
Date      object
Amount   float64
dtype: object

但是现在我们在药膏中看到了最后一只苍蝇。

日期

具有不透明类别的'A''B'很好, 但对于Date,我们可能想知道2月或3月 一月之后的某几天 而不是在该列中保留不透明的str标签。

当我们提供data输入时,我们可能已经完成了类型转换, 但也可以在此阶段对其进行清理:

import datetime as dt

def to_timestamp(day: str):
    return dt.datetime.strptime(day, '%Y-%m-%d')

grouped['Date'] = grouped.Date.apply(to_timestamp)

成功调整了数据的形状和类型, 您现在应该处于可以让图书馆进一步分析的位置。