Pandas 日期处理:生成及去除工作日与节假日

Pandas 日期处理:生成工作日与节假日

📅

Pandas 提供了许多日期处理功能,使得处理时间序列数据变得容易。本文将介绍如何使用 Pandas 生成工作日和节假日。在进行实际操作前,请确保已安装了 Pandas 库。安装方法如下:

pip install pandas

1. 📊 生成工作日

要生成一年中的工作日,我们可以使用 pandas.bdate_range 函数。例如,要生成 2023 年的工作日,可以使用以下代码:

import pandas as pd

start_date = '2023-01-01'
end_date = '2023-12-31'

business_days = pd.bdate_range(start=start_date, end=end_date)
print(business_days)

接下来,我们将展示如何从数据中去除工作日。首先,假设我们有如下数据:

date_range = pd.date_range(start=start_date, end=end_date)
data = pd.DataFrame(date_range, columns=['date'])

接着,我们可以使用 pandas.DataFrame.isin 函数找到数据中的工作日,并使用 ~ 运算符将这些工作日从数据中去除。

non_business_days = data[~data['date'].isin(business_days)]
print(non_business_days)

2. 🎉 生成节假日

我们可以使用 Pandas 中的 AbstractHolidayCalendar 类和 Holiday 类来创建自定义节假日。以下是一个包含2023年部分中国节假日的示例:

from pandas.tseries.holiday import AbstractHolidayCalendar, Holiday
import pandas as pd

class ChinaHolidaysCalendar(AbstractHolidayCalendar):
    rules = [
        Holiday('元旦', month=1, day=1),
        Holiday('元旦', month=1, day=2),
        Holiday('元旦', month=1, day=3),
        Holiday('春节', month=1, day=21),
        Holiday('春节', month=1, day=22),
        # 同样的方法添加其他节假日
    ]

start_date = '2023-01-01'
end_date = '2023-12-31'

china_holidays_calendar = ChinaHolidaysCalendar()
holidays = china_holidays_calendar.holidays(start_date, end_date)
print(holidays)

现在我们已经生成了2023年包含多天的中国节假日,接下来我们将从数据中去除这些节假日。首先,假设我们有如下数据:

date_range = pd.date_range(start=start_date, end=end_date)
data = pd.DataFrame(date_range, columns=['date'])

接下来,我们可以使用 pandas.DataFrame.isin 函数找到数据中的节假日,并使用 ~ 运算符将这些节假日从数据中去除。

non_holidays = data[~data['date'].isin(holidays)]
print(non_holidays)

至此,我们已经成功地使用 Pandas 生成了工作日和节假日,并从数据中去除了这些日期。请注意,这个例子只包含了部分节假日,实际应用时请根据实际情况进行调整。

3. 🌟 Pandas 日期处理知识点

  1. 创建日期范围: 使用 pd.date_range 函数可以创建日期范围。例如,要生成从2023年1月1日到2023年12月31日的日期范围,可以使用以下代码:
date_range = pd.date_range(start='2023-01-01', end='2023-12-31')

日期偏移量: Pandas 提供了 DateOffset 类,可以用于对日期执行各种算术运算。例如,要将日期向前推一天,可以使用以下代码:

from pandas.tseries.offsets import DateOffset

date = pd.Timestamp('2023-01-01')
new_date = date + DateOffset(days=1)

重采样时间序列数据: 使用 pd.DataFrame.resample 函数可以将时间序列数据按照指定频率进行重新采样。例如,要将按天采样的数据转换为按月采样的数据,可以使用以下代码:

resampled_data = data.resample('M').mean()

滚动窗口操作: 使用 pd.DataFrame.rolling 函数可以对时间序列数据执行滚动窗口操作。例如,要计算7天滚动平均值,可以使用以下代码:

rolling_mean = data.rolling(window=7).mean()

日期格式化: 使用 pd.Timestamp.strftime 函数可以将日期格式化为字符串。例如,要将日期格式化为 “YYYY-MM-DD” 的格式,可以使用以下代码:

formatted_date = pd.Timestamp('2023-01-01').strftime('%Y-%m-%d')

📚 相关推荐

在本文中,我们介绍了 Pandas 日期处理的基本知识。如果您对这方面的内容感兴趣,以下是一些相关文章,供您参考和深入了解:

  1. Pandas 时间戳与时间差

  2. Pandas 日期格式化与解析

  3. Pandas 时间序列的滚动窗口操作与应用

  4. Pandas 特殊连接

我们建议您阅读这些文章,以便进一步提高您在 Pandas 日期处理方面的技能。祝您学习愉快!😊

感谢您在茫茫网络中找到了这篇博客!如果您觉得本文对您有所启发或帮助,别忘了给我们一个大大的点赞👍和关注!让我们一起在知识的海洋里遨游,把干巴巴的学习变得更有趣和轻松!😉🎉
希望我们的文章能为您的学习带来一丝乐趣,祝您在生活中不仅取得成功,而且保持幽默与快乐!🤣

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄昏中起飞的猫头鹰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值