概述
- 在商业数据分析中,需要用到日期维度
例如:绘制连续日期的销量曲线;按周、月、季聚合求和… - 按周、月、季聚合的格式:
周:2022年第01周
、2022w51
、202251
…
月:2022年01月
、2022-01
…
季:2022年第1季
、2022q1
、2022Q1
… - 在某些零售行业中,线下零售假日销量高于工作日
因此,在按周汇总时,希望以星期一作为周的起点
对于跨年,以 年内第1个星期一 作为 年的第一周,此前归入上1年最后1周,例如下面
例如,
2023-01-01
归属到2022w52
那周
Python生成日期维度表
from datetime import datetime, timedelta
from math import ceil
START = '2022-01-01'
END = '2022-12-31'
HOLIDAY = {
'2022-01-01': ('元旦', False), '2022-01-02': ('元旦', False),
'2022-01-03': ('元旦', False), '2022-01-29': ('补班', True),
'2022-01-30': ('补班', True), '2022-01-31': ('春节', False),
'2022-02-01': ('春节', False), '2022-02-02': ('春节', False),
'2022-02-03': ('春节', False), '2022-02-04': ('春节', False),
'2022-02-05': ('春节', False), '2022-02-06': ('春节', False),
'2022-04-02': ('补班', True), '2022-04-03': ('清明节', False),
'2022-04-04': ('清明节', False), '2022-04-05': ('清明节', False),
'2022-04-24': ('补班', True), '2022-04-30': ('劳动节', False),
'2022-05-01': ('劳动节', False), '2022-05-02': ('劳动节', False),
'2022-05-03': ('劳动节', False), '2022-05-04': ('劳动节', False),
'2022-05-07': ('补班', True), '2022-06-03': ('端午节', False),
'2022-06-04': ('端午节', False), '2022-06-05': ('端午节', False),
'2022-09-11': ('中秋节', False), '2022-09-12': ('中秋节', False),
'2022-09-10': ('中秋节', False), '2022-10-01': ('国庆节', False),
'2022-10-02': ('国庆节', False), '2022-10-03': ('国庆节', False),
'2022-10-04': ('国庆节', False), '2022-10-05': ('国庆节', False),
'2022-10-06': ('国庆节', False), '2022-10-07': ('国庆节', False),
'2022-10-08': ('补班', True), '2022-10-09': ('补班'