如何对 pandas 数据框中的多列执行分组并使用 python 中的 fbProphet 预测未来值?

How to perform group by on multiple columns in a pandas dataframe and predict future values using fbProphet in python?

我的数据框如下所示。我正在尝试根据 pandas 数据框中存在的日期和组 aggregate(sum) 我的金额列。我能够成功 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()

您遇到了一些问题。

数字

data 初始化的第 3 行应该传入 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 我们可能想知道二月或三月 一月后的特定天数, 而不是在该列中留下不透明的 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)

成功处理了数据的形状和类型后, 你现在应该可以让图书馆进一步分析它了。