栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

workalendar基本使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

workalendar基本使用

文章目录
  • 前言
  • 一、workalendar是什么?
  • 二、使用步骤
    • 1.安装
    • 2.使用示例
        • 官方示例
        • 如何通过workalendar够造节日特征
  • 总结


前言

最近在做一个消费者预定酒店是否成功的案例中,有日期类型的关键特征,在做特征工程中原本的日期数据例如:2022-05-05对建模没有实际帮助,考虑从中挖掘出节假日信息,使用到了workalendar这个库,本文是对相关操作的一些记录。


一、workalendar是什么?

Workalendar 是一个 Python 模块,它提供了能够处理日历、列出法定/宗教假期并提供与工作日相关的计算功能的类。
官方链接:https://github.com/workalendar/workalendar

二、使用步骤 1.安装

通过pip安装

pip install workalendar

通过conda安装

conda install -c conda-forge workalendar
2.使用示例 官方示例
>>> 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’]为日期特征列

  1. 找到数据的时间范围(以年为单位)
 data.arrival.dt.year.unique()
 #执行结果为:array([2017, 2018], dtype=int64)
  1. 根据对应的国家和年份载入该年的节假日期
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的基本使用,如果有更深入的使用需求可以去对应的官方文档中查看示例。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/871044.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号