在 NumPy 中查找给定月份的工作日数量


NumPy 是 Python 中一个用于数值计算、科学计算、数据分析和机器学习应用的开源库。该库具有强大的数组方法和工具,可以执行向量和矩阵运算。

由于 NumPy 不是默认 Python 库的一部分,因此您必须手动安装 NumPy 模块。可以使用 Python 包管理器 pip 通过执行以下命令来实现此目的:

pip install numpy

我们将使用 NumPy 的busday_count()函数来计算所需的工作日数量。这将计算两个特定日期之间工作日(周一至周五)的数量。

语法

numpy.busday_count(startdate, enddate, weekmask, holidays)

返回值 - 整数(天数)

  • 开始日期 - 您要计算有效天数的日期范围(包含)。这应该是一个“YYYY-MM-DD”格式的字符串。

  • 结束日期 - 您要计算有效天数的日期范围(不包含)。这也应该是一个“YYYY-MM-DD”格式的字符串。

  • Weekmask - 这是一个可选的字符串参数,表示一周中的几天。默认情况下,将其设置为周一至周五。

  • 节假日 - 日期字符串数组,标记为节假日,并将其从计数中排除。这也是一个可选参数。

示例 1

以下示例使用 NumPy 和 datetime 模块计算给定月份中的工作日(周一至周五)数量。

算法

  • 导入所需的 numpy 库。

  • 将 startdate 和 enddate 参数传递给 busday_count() 函数。

  • 打印工作日数量。

import numpy as np

# get the number of days in the month
num_days = np.busday_count('2023-02-01', '2023-03-01')

print(f"There are {num_days} weekdays in 2023 February")

输出

There are 20 weekdays in 2023 February

示例 2

以下示例计算 2 月份的工作日数量,前提是它是闰年。我们考虑 2024 年,它是闰年。

import numpy as np

# get the number of days in a leap year month
num_days = np.busday_count('2024-02-01', '2024-03-01', weekmask = 'Mon Tue Wed Thu Fri')

print(f"There are {num_days} weekdays in 2024 February")

输出

There are 21 weekdays in  2024 February

示例 3

以下示例计算不包括法定假期的工作日数量。

算法

  • 导入 numpy 库。

  • 创建 1 月份节假日列表。

  • 计算工作日数量并将值存储在 num_days 变量中,并将 holidays 列表与函数一起传递。

  • 打印值。

import numpy as np
holidays = ['2023-01-01', '2023-01-26']

# get the number of days in the month
num_days = np.busday_count('2023-01-01', '2023-02-01', holidays = holidays)

print(f"Weekdays in January 2023 excluding the national holidays are: {num_days}")

输出

Weekdays in January 2023 excluding the national holidays are: 21

注意 -如果不排除法定假日,工作日数量为 22。由于 1 月 1 日是星期日,因此不计为工作日,因此为 21 个工作日,而不是 (22-2=20) 20 个工作日。

holidays 参数将采用字符串或日期列表作为其值。它还会检查指定的法定假日是否为工作日

结论

busday_count() 函数对于需要计算两个日期之间工作日的应用程序很有用。它可以有效地用于银行的利息计算、债券期限或股票市场的交易期限。它还可以用于项目管理应用程序,以计算完成任务或项目所需的工作日数。

更新于: 2023-08-23

211 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告