最近在整理公司的销售数据,零售数据方面,有时需要刨除节假日日期,这时候就需要制作一个手工日历,与基础的销售报表日期字段进行关联。
手工输入非节假日非常麻烦,在搜索方法的时候发现了一位大佬写的api接口,可以直接输出正常工作日和休息日的加工日期。这里记录一下。
首先,在excel里面,记得从第二行开始写上你需要年份的第一日(日期格式),然后向下拖拽生成365日的日期,如下图:
第二步,在excel中将刚刚形成的日期转化成文本格式,即TEXT(A2,"yyyymmdd")。
第三步,在python中调用api接口,如下:
#调用包之前要确定这些包都安装了
import requests
import json
from win32com.client import Dispatch
from os import path
import time
import pandas as pd
def get_holiday(ws):
'''根据日期判断日期类型:正常工作日对应结果为 0, 法定节假日对应结果为 1, 节假日调休补班对应的结果为 2,休息日对应结果为 3'''
url = r'http://api.goseek.cn/Tools/holiday?date='
try:
for i in range(2, 367):
data = ws.Range('A' + str(i)).Value
new_url = url + data
r = requests.get(new_url)
time.sleep(1)
r.encoding = 'utf-8'
d = json.loads(r.text)
answer = d['data']
ws.Range('B' + str(i)).Value = answer
print('{}:{}'.format(data, answer))
except Exception as e:
print(e)
finally:
wb.Close(True)
xl.quit()
xl = Dispatch("Excel.Application")
xl.Visible = False #True是显示, False是隐藏
xl.DisplayAlerts = 0
wb_path = "D:zakki_work2018年日期.xlsx" ##这里选择你刚才加工过的表格位置
wb = xl.Workbooks.Open(wb_path)
ws = wb.Sheets('Sheet1')
get_holiday(ws)
运行完毕,你就会得到一张这样的表格:正常工作日对应结果为 0, 法定节假日对应结果为 1, 节假日调休补班对应的结果为 2,休息日对应结果为 3,对应筛选就可以了。