为Prophet中的不同国家/地区办理同等假期

2024-10-03 04:27:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用时间变量创建数据集,更具体地说,是节假日,在用pandas做了一些测试之后,我现在使用FBProphet

由于我正在考虑一个地区(伊比利亚半岛),它将涉及两个国家的假期:葡萄牙和西班牙。这是当前Prophet的行为:

>>> m.add_country_holidays('PT')
>>> m.add_country_holidays('ES')
WARNING:fbprophet:Changing country holidays from PT to ES

因为我的目标是简单地知道这是否是假日:

•即使同一个假期可能会在不同国家的不同日期结束,对于我正在做的工作,知道假期之间的区别并不重要

•如果庆祝活动在同一天举行,如“Ano Novo”和“Año Nuevo”,我所关心的就是在那一天,那就是节日

尽管知道我们在哪些国家(和地区)有假期是有帮助的,因为人口不同,这是影响我预测的一个因素,但只知道这是一个假期已经是我预测的一个很好的改进

以下是我如何获得每个国家的假期:

from fbprophet.make_holidays import make_holidays_df

year_list = [2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020]
PTBusinessCalendar = make_holidays_df(year_list=year_list, country='PT')
ESBusinessCalendar = make_holidays_df(year_list=year_list, country='ES')

为了获得伊比利亚假日日历,我可以concat它们,如下所示:

iberian = [PTBusinessCalendar, ESBusinessCalendar]
iberian_2 = pd.concat(iberian).sort_values('ds').reset_index(drop=True)

这将导致以下输出:

Output of the Iberian Calendar

例如,可以从数据帧中看到,索引0和1都具有相同的日期(ds),并且表示相同的假日

为了连接具有相同ds的行并在第一行中写入holiday名称(用逗号分隔),我应该做什么


Tags: 数据addptdfmakeesdsholidays
1条回答
网友
1楼 · 发布于 2024-10-03 04:27:29

以下解决了我的问题:

def join(h):
    return ', '.join(h.holiday)
IberianBusinessCalendar = iberian_2.groupby("ds").apply(join).to_frame(name="holiday")

并输出如下:

enter image description here

相关问题 更多 >