• 2020年日期表-python实现


    import pandas as pd
    import calendar
    import datetime


    # 生成日期范围
    date = pd.date_range("2020-01-01","2020-12-31",freq="D")
    # 将日期转化为字符串
    dt_str = [i.strftime("%Y%m%d") for i in date]


    # 日期对应的星期(数值)
    week = [int(i.strftime("%w")) for i in date] # 0表示星期日


    # 日期对应的星期(中文)
    week_desc = []
    def week_desc_info():
      for i in week:
        if i == 0:
          week_desc.append("星期天")
        elif i == 1:
          week_desc.append("星期一")
        elif i == 2:
          week_desc.append("星期二")
        elif i == 3:
          week_desc.append("星期三")
        elif i == 4:
          week_desc.append("星期四")
        elif i == 5:
          week_desc.append("星期五")
        elif i == 6:
          week_desc.append("星期六")
      return week_desc
    week_desc = week_desc_info()


    # 月份(数值,01,02,...)
    month = [i.strftime("%m") for i in date]
    # 月份(中文)
    month_desc = [str(i) + "月" for i in month]


    # 季度(数值)
    season = []
    def season_desc_info():
      for i in list(int(j) for j in month):
        if i <= 3:
          season.append(1)
        elif i > 3 and i <= 6:
          season.append(2)
        elif i > 6 and i <= 9:
          season.append(3)
        elif i > 9 and i <= 12:
          season.append(4)
      return season

    season = season_desc_info()


    # 季度(中文)
    season_desc = ["第" + str(i) + "季度" for i in season]


    # 年份(数值)
    year = [int(i.strftime("%Y")) for i in date]
    # 年份(中文)
    year_desc = [ str(i) + "年" for i in year]


    # 一年中的第几天
    date_seq = [int(i.strftime("%j")) for i in date]

    # 一年中的第几周
    week_seq = [int(i.strftime("%U")) + 1 for i in date]

    # 是否周末
    weekend_flag = []
    def is_weekend_flag():
      for i in week:
        if i == 0 or i == 6:
          weekend_flag.append(1)
        else:
          weekend_flag.append(0)
      return weekend_flag

    weekend_flag = is_weekend_flag()

    # 是否月末
    monend_flag = []
    def is_month_lastday():
       for i in date:
        #获得当月一共有多少天(也就是最后一天的日期)
        _,days_in_month = calendar.monthrange(i.year, i.month)
        # 获取当天是当月中的第几天
        day_of_month =int(i.strftime("%d"))
        if day_of_month == days_in_month:
          monend_flag.append(1)
        else:
          monend_flag.append(0)
      return monend_flag

    monend_flag = is_month_lastday()

    # 节假日标识
    holiday_tp = []

    # 节假日名称
    holiday_desc = []
    def is_holiday_desc():
      for i in dt_str:
        if i == '20200101':
          holiday_desc.append("元旦")
        elif i in ('20200124','20200125','20200126','20200127','20200128','20200129','20200130'):
          holiday_desc.append("春节")
        elif i in ('20200404','20200405','20200406'):
          holiday_desc.append("清明节")
        elif i in ('20200501','20200502','20200503','20200504','20200505'):
          holiday_desc.append("国际劳动节")
        elif i in ('20200625','20200626','20200627'):
          holiday_desc.append("端午节")
        elif i in ('20201001'):
          holiday_desc.append("中秋节/国庆节")
        elif i in ('20201002','20201003','20201004','20201005','20201006','20201007','20201008'):
          holiday_desc.append("国庆节")
        else:
          holiday_desc.append("非节假日")
      return holiday_desc

    holiday_desc = is_holiday_desc()


    # 周末标识
    weekend_desc = []
    def is_weekend_desc():
      for i in date:
        date_str = i.strftime("%Y%m%d")
        if date_str in ('20200119','20200201','20200426','20200509','20200628','20200927','20201010'):
          weekend_desc.append("非周末")
        else:
          week_id = int(i.strftime("%w"))
          if week_id in (0,6):
            weekend_desc.append("周末")
          else:
            weekend_desc.append("非周末")
      return weekend_desc

    weekend_desc = is_weekend_desc()


    # 月末标识
    monend_desc = []
    def is_monend_desc():
      for i in monend_flag:
        if i == 1:
          monend_desc.append("月末")
        else:
          monend_desc.append("非月末")
      return monend_desc

    monend_desc = is_monend_desc()


    # 旬(数值)
    xun_id = []
    def get_xun_id():
      for i in date:
        # 获取当天是当月中的第几天
        day_of_month =int(i.strftime("%d"))
        if day_of_month <= 10:
          xun_id.append(1)
        elif day_of_month > 10 and day_of_month <= 20:
          xun_id.append(2)
        else:
          xun_id.append(3)
      return xun_id

    xun_id = get_xun_id()


    # 旬(中文)
    xun_desc = []
    def get_xun_desc():
      for i in xun_id:
        if i == 1:
          xun_desc.append("上旬")
        elif i == 2:
          xun_desc.append("中旬")
        else:
          xun_desc.append("下旬")
      return xun_desc

    xun_desc = get_xun_desc()

    # 周(数值)
    week_seq_id = []
    def get_week_seq_id():
      for i in date:
        # 构造当前月的1号
        first_day_of_month =datetime.date(i.year, i.month, 1)

        # 一年中的第几周
        end = int(i.strftime("%U")) + 1
        begin = int(first_day_of_month.strftime("%U")) + 1
        week_seq_id.append(end - begin + 1)
      return week_seq_id

    week_seq_id=get_week_seq_id()


    # 周(中文)
    week_seq_desc = []
    def get_week_seq_desc():
      for i in week_seq_id:
        if i == 1:
          week_seq_desc.append("第一周")
        elif i == 2:
          week_seq_desc.append("第二周")
        elif i == 3:
          week_seq_desc.append("第三周")
        elif i == 4:
          week_seq_desc.append("第四周")
        elif i == 5:
          week_seq_desc.append("第五周")
        elif i == 6:
          week_seq_desc.append("第六周")
        else:
          week_seq_desc.append("第七周")
      return week_seq_desc
    week_seq_desc = get_week_seq_desc()


    # 构造日期维表
    dataframe = pd.DataFrame({'date':dt_str,'week':week,'week_desc':week_desc,
                  'month':month,'month_desc':month_desc,
                  'season':season,'season_desc':season_desc,
                  'year':year,'year_desc':year_desc,
                  'date_seq':date_seq,'week_seq':week_seq,
                  'weekend_flag':weekend_flag,'monend_flag':monend_flag,
                  'holiday_desc':holiday_desc,
                  'weekend_desc':weekend_desc,'monend_desc':monend_desc,
                  'xun_id':xun_id,'xun_desc':xun_desc,
                  'week_seq_id':week_seq_id,'week_seq_desc':week_seq_desc})
    dataframe.to_excel('./data/date2020.xlsx',index=False)

  • 相关阅读:
    opencv::绘制-基本几何
    公共盘访问方法(更改用户登录公共盘)
    testlink数据库访问密码修改
    SQL Server外部链接时报错:Error locating serverInstance specified
    SQL server数据库端口访问法
    python模块之wordcloud
    随性练习:python字典实现文本合并
    python模块之numpy
    python模块之openpyxl扩展
    python模块之openpyxl介绍
  • 原文地址:https://www.cnblogs.com/gaojr/p/12082294.html
Copyright © 2020-2023  润新知