最近有需要某一年的日期与节假日,周六日的对照表,故在此记录一下实现思路和代码。主要用到了pandas的日期解析函数和聚合数据提供的万年历解析API,代码并不复杂。


万年历API申请地址:https://www.juhe.cn/docs/api/id/177

import urllib
import urllib.request as request
import urllib.error as error
import jsondef get_holiday(key, date, query_method='day'):"""key: 申请的keydate: str类型,查询日期,根据不同的查询方式,输入的日期格式也不同- day: 格式为YYYY-MM-DD,如月份和日期小于10,则取个位,如:2021-1-1- month: 格式为YYYY-MM,如月份和日期小于10,则取个位,如:2021-1- year: 格式为YYYY,如:2021query_method: str类型,查询方式: day,month,year"""params_dict = {"key": key,"date": "2021-11-11"}if not key:key = "输入你的key"if query_method == "day":params_dict = {"key": key,"date": date}elif query_method == "month":params_dict = {"key": key, "year-month": date}elif query_method == "year":params_dict = {"key": key,"year": date}else:print("Please input the correct match params format, your input are:{}{}".format(date, query_method))api_url = f'http://v.juhe.cn/calendar/{query_method}'params = urllib.parse.urlencode(params_dict)try:req = request.Request(api_url, params.encode())response = request.urlopen(req)content = response.read()result = json.loads(content)except error.HTTPError as err:print(err)except error.URLError as err:# 其他异常print(err)return result
def generate_csv(year, start_month, end_month):start_date = str(year) + '0101'end_date = str(year) + '1231'weekday_df = pd.DataFrame()date_range = pd.date_range(start_date, end_date, freq = '1D')# 获取星期几weekday_df['date'] = date_rangeweekday_df['day_of_week'] = weekday_df['date'].dt.dayofweek + 1holiday_array = get_year_month_holiday(year, start_month, end_month)holiday_df = pd.DataFrame()for i in range(len(holiday_array)):each_day = holiday_array[i]['list']each_df = pd.DataFrame(each_day)holiday_df = holiday_df.append(each_df)# 去重holiday_df.drop_duplicates(inplace=True)holiday_df.reset_index(drop=True, inplace=True)holiday_df['date'] = pd.to_datetime(holiday_df['date'])# 合并数据df_merge = pd.merge(weekday_df, holiday_df, how='left', on='date')df_merge.fillna(0, inplace=True)df_merge['status'] = df_merge['status'].astype('int')# 是否节假日judge = np.where(df_merge['day_of_week'] < 6, 0, 1) + df_merge['status']judge = np.where((judge == 2) | (judge == 1), 'Y', 'N')df_merge['is_holiday'] = judgereturn df_merge

结果


参考:

  1. https://www.jianshu.com/p/cdbdffcb8e30
  2. https://www.sdk.cn/details/5Oo4L8VEexlEbVMrWv?s=api

Python实现借助聚合数据API接口生成某一年的节假日对照表相关推荐

  1. Java: 聚合数据API接口调用城市天气预报

    Java: 聚合数据API接口调用城市天气预报 点击进入[数据聚合_数据接口调用_开发者数据API开放平台](官网) 在pom文件中,加入依赖 <!--返回json数据--><dep ...

  2. ajax查询全国天气预报,使用聚合数据api接口

    空值情况 苏州 界面如上,可以根据自己需求再添加一些内容. 功能需求:根据城市名称查询该城市的天气情况,输入空值的时候默认查询北京天气 这个是我使用聚合数据提供的免费20次请求全国天气预报API,注册 ...

  3. python 易盛行情_易盛信息9.0外盘期货行情数据API接口公共授权开发包例子代码...

    易盛信息9.0外盘期货行情数据API接口公共授权开发包例子代码 怎么才能获取到外盘期货行情数据API接口呢?不少朋友就会考虑到易盛9.0行情API接口,本身易盛就是一个软件提供商,提供行情API接口也 ...

  4. 调用聚合数据API实现手机号码归属地查询

    调用聚合数据API实现手机号码归属地查询 1.作者介绍 2.相关介绍 2.1 什么是聚合数据? 2.2 API介绍 2.3 手机号码归属地 3.实验过程 3.1如何调用聚合数据API 3.2代码实现 ...

  5. 使用聚合数据API查询快递数据-短信验证码-企业核名

    有位朋友让我给他新开的网站帮忙做几个小功能,如下: 输入快递公司.快递单号,查询出这个快件的所有动态(从哪里出发,到了哪里) 在注册.登录等场景下的手机验证码(要求有一定的防刷策略) 通过输入公司名的 ...

  6. 通过聚合数据API实现快递数据查询-短信验证码-企业核名

    有位朋友让我给他新开的网站帮忙做几个小功能,如下: 输入快递公司.快递单号,查询出这个快件的所有动态(从哪里出发,到了哪里) 在注册.登录等场景下的手机验证码(要求有一定的防刷策略) 通过输入公司名的 ...

  7. 历年奥运比赛数据 API 接口

    历年奥运比赛数据 API 接口 包含运动员以及奖牌数据,历年所有数据 / 多种查询条件. 1. 产品功能 自奥运举办以来历年的所有数据: 27 万全量数据: 多种查询条件便于多维度分析: 数据持续更新 ...

  8. A股历史行情数据 API 接口

    A股历史行情数据 API 接口 所有A股历史交易行情数据,全量历史交易 / 包含前后复权数据. 1. 产品功能 支持所有 A 股全量历史(天)交易查询: 包含上交所和深交所所有股票数据: 每日 A 股 ...

  9. 科创板历史行情数据 API 接口

    科创板历史行情数据 API 接口 全量科创板历史行情,全量历史数据 / 支持代码筛选. 1. 产品功能 支持所有科创板历史交易数据查询: 包含科创板交易多项指标数据: 毫秒级查询性能: 全接口支持 H ...

  10. 基于Python脚本和聚合数据实现手机号码归属地信息查询

    聚合数据简介 聚合数据是一个为智能手机开发者,网站站长,移动设备开发人员及图商提供原始数据API服务的综合性云数据平台.包含手机聚合,网站聚合,LBS聚合三部分,其功能类似于Google APIS和百 ...

最新文章

  1. 0x02 mysql 表格相关操作
  2. c语言字符串转64位哈希值,对字符串进行hash处理用什么方法好???
  3. python【力扣LeetCode算法题库】20- 有效的括号(辅助栈)
  4. [Scheduled Timer]第三回:事件存储(EventStorage)
  5. jzoj C组 2017.1.19 比赛
  6. ios15之取消UITabbleViewCell的高亮效果
  7. 037-PHP如何返回闭包函数实例
  8. 图解浏览器缓存,教你提高用户体验
  9. ProPublica Illinois如何每天使用GNU Make加载1.4GB数据
  10. npm的安装和更新---npm工作笔记002
  11. NET EF 连接Oracle 的配置方法记录
  12. no system images installed for this target这个问题如何解决?
  13. golang 语言中关于err的函数的封装使用
  14. eclipse写代码比jcreator好用多了
  15. Android热修复Sophix详解
  16. Yii2汉字转拼音类
  17. jQuery中的siblings()
  18. 网页美学设计原则(上)
  19. 虚拟码号的两种形式你了解多少!
  20. el-upload回显细节--没有图片数据返回的时候每点击一次添加多了一个空白图片

热门文章

  1. PS更改图片的像素大小和格式
  2. 长微博生成器html,微信文章怎么搬到微博中?微信内容一键生成长微博的技巧
  3. mysql grant教程_MySQL的Grant命令详解
  4. ps计算机图片素材,电脑ps怎么把图片变清晰(手把手教你修图)
  5. Android jetpack DataStore 1.0.0-rc02最新版从SharedPreferences迁移到Preferences DataStore
  6. BaseRecyclerViewAdapterHelper开源项目之BaseSectionQuickAdapter 实现Expandable And collapse效果的源码学习...
  7. 浅聊使用PHP实现微信公众号登录
  8. android 翻译功能开发,Android使用有道翻译API实现在线翻译功能
  9. html 手机端可以选择复制粘贴,js移动端实现网站内容复制粘贴功能
  10. jenkins停止僵尸作业Click here to forcibly terminate running steps