- 前言
- 一、workalendar是什么?
- 二、使用步骤
- 1.安装
- 2.使用示例
- 官方示例
- 如何通过workalendar够造节日特征
- 总结
前言
最近在做一个消费者预定酒店是否成功的案例中,有日期类型的关键特征,在做特征工程中原本的日期数据例如:2022-05-05对建模没有实际帮助,考虑从中挖掘出节假日信息,使用到了workalendar这个库,本文是对相关操作的一些记录。
一、workalendar是什么?
Workalendar 是一个 Python 模块,它提供了能够处理日历、列出法定/宗教假期并提供与工作日相关的计算功能的类。
官方链接:https://github.com/workalendar/workalendar
通过pip安装
pip install workalendar
通过conda安装
conda install -c conda-forge workalendar2.使用示例 官方示例
>>> from datetime import date >>> from workalendar.europe import France >>> cal = France() >>> cal.holidays(2012) [(datetime.date(2012, 1, 1), 'New year'), (datetime.date(2012, 4, 9), 'Easter Monday'), (datetime.date(2012, 5, 1), 'Labour Day'), (datetime.date(2012, 5, 8), 'Victory in Europe Day'), (datetime.date(2012, 5, 17), 'Ascension Day'), (datetime.date(2012, 5, 28), 'Whit Monday'), (datetime.date(2012, 7, 14), 'Bastille Day'), (datetime.date(2012, 8, 15), 'Assumption of Mary to Heaven'), (datetime.date(2012, 11, 1), "All Saints' Day"), (datetime.date(2012, 11, 11), 'Armistice Day'), (datetime.date(2012, 12, 25), 'Christmas')] >>> cal.is_working_day(date(2012, 12, 25)) # it's Christmas False >>> cal.is_working_day(date(2012, 12, 30)) # it's Sunday False >>> cal.is_working_day(date(2012, 12, 26)) True >>> cal.add_working_days(date(2012, 12, 23), 5) # 5 working days after Xmas datetime.date(2012, 12, 31)
如需更完整的文档和高级用法,请访问官方 workalendar 文档。
如何通过workalendar够造节日特征下面以我自己案例中的数据为例进行介绍:data[‘arrival’]为日期特征列
- 找到数据的时间范围(以年为单位)
data.arrival.dt.year.unique() #执行结果为:array([2017, 2018], dtype=int64)
- 根据对应的国家和年份载入该年的节假日期
cal = UnitedKingdom()
holidays =[]
for i in data.arrival.dt.year.unique():
holidays.extend(cal.holidays(year=i))
print(holidays)
3.构造新特征is_Holiday
cal = UnitedKingdom()
holidays =[]
for i in data.arrival.dt.year.unique():
holidays.extend(cal.holidays(year=i))
data['is_Holiday'] = data.arrival.isin(pd.DataFrame(holidays)[0])
总结
本文记录了一些workalendar的基本使用,如果有更深入的使用需求可以去对应的官方文档中查看示例。



