Python timedelta đến tháng

Bắt đầu từ NumPy 1. 7, có các kiểu dữ liệu mảng lõi vốn hỗ trợ chức năng ngày giờ. Kiểu dữ liệu được gọi là

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
7, được đặt tên như vậy vì
>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
8 đã được sử dụng bởi thư viện chuẩn Python

Datetime64 Quy ước và Giả định

Tương tự như lớp Python

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
9, ngày được thể hiện trong Lịch Gregorian hiện tại, kéo dài vô thời hạn cả trong tương lai và trong quá khứ. Trái ngược với Python
>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
9, chỉ hỗ trợ các năm trong phạm vi 1 AD — 9999 AD,
>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
7 cũng cho phép các ngày trước Công nguyên; . e. năm 2 TCN được đánh số −1, năm 1 TCN được đánh số 0, năm 1 AD được đánh số 1

Thời gian tức thời, giả sử 16. 23. 32. 234, được biểu thị đếm giờ, phút, giây và phân số từ nửa đêm. tôi. e. 00. 00. 00. 000 là nửa đêm, 12. 00. 00. 000 là buổi trưa, v.v. Mỗi ngày dương lịch có đúng 86400 giây. Đây là thời gian “ngây thơ”, không có khái niệm rõ ràng về múi giờ hoặc thang thời gian cụ thể (UT1, UTC, TAI, v.v. )

Datetime và Timedelta Số học

NumPy cho phép phép trừ hai giá trị ngày giờ, một thao tác tạo ra một số có đơn vị thời gian. Bởi vì NumPy không có hệ thống đại lượng vật lý trong cốt lõi, nên kiểu dữ liệu

>>> np.datetime64('2009-01-01') - np.datetime64('2008-01-01')
numpy.timedelta64(366,'D')
2 được tạo để bổ sung cho
>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
7. Các đối số cho
>>> np.datetime64('2009-01-01') - np.datetime64('2008-01-01')
numpy.timedelta64(366,'D')
2 là một số, để biểu thị số lượng đơn vị và đơn vị ngày/giờ, chẳng hạn như (D)ay, (M)onth, (Y)ear, (h)ours, (m)inutes hoặc . Kiểu dữ liệu
>>> np.datetime64('2009-01-01') - np.datetime64('2008-01-01')
numpy.timedelta64(366,'D')
2 cũng chấp nhận chuỗi “NAT” thay cho số đối với giá trị “Không phải lúc”

Thí dụ

>>> np.timedelta64(1, 'D')
numpy.timedelta64(1,'D')

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
0

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')

Datetimes và Timedeltas phối hợp với nhau để cung cấp các cách tính toán datetime đơn giản

Thí dụ

>>> np.datetime64('2009-01-01') - np.datetime64('2008-01-01')
numpy.timedelta64(366,'D')

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
3

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
4

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
5

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
6

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
7

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
8

Có hai đơn vị Timedelta ('Y', năm và 'M', tháng) được xử lý đặc biệt vì chúng thay đổi bao nhiêu thời gian tùy thuộc vào thời điểm chúng được sử dụng. Trong khi một đơn vị ngày timedelta tương đương với 24 giờ, không có cách nào để chuyển đổi đơn vị tháng thành ngày, vì các tháng khác nhau có số ngày khác nhau

Thí dụ

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
00

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
01

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
02

Chức năng ngày làm việc

Để cho phép sử dụng ngày giờ trong ngữ cảnh chỉ một số ngày nhất định trong tuần là hợp lệ, NumPy bao gồm một tập hợp các hàm “busday” (ngày làm việc)

Mặc định cho các chức năng ngày bận rộn là các ngày hợp lệ duy nhất là từ Thứ Hai đến Thứ Sáu (ngày làm việc thông thường). Việc triển khai dựa trên một “mặt nạ tuần” chứa 7 cờ Boolean để biểu thị các ngày hợp lệ;

Các chức năng “busday” có thể kiểm tra thêm danh sách các ngày “nghỉ lễ”, các ngày cụ thể không phải là ngày hợp lệ

Hàm

>>> np.datetime64('2009-01-01') - np.datetime64('2008-01-01')
numpy.timedelta64(366,'D')
6 cho phép bạn áp dụng hiệu số được chỉ định trong ngày làm việc cho thời gian biểu với đơn vị là 'D' (ngày)

Thí dụ

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
03

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
04

Khi ngày nhập vào rơi vào cuối tuần hoặc ngày lễ, trước tiên,

>>> np.datetime64('2009-01-01') - np.datetime64('2008-01-01')
numpy.timedelta64(366,'D')
6 sẽ áp dụng quy tắc để chuyển ngày thành ngày làm việc hợp lệ, sau đó áp dụng giá trị bù. Quy tắc mặc định là 'nâng cao', quy tắc này chỉ đơn giản là tăng một ngoại lệ. Các quy tắc thường được sử dụng nhất là 'chuyển tiếp' và 'lùi'

Thí dụ

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
05

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
06

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
07

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
08

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
09

Trong một số trường hợp, việc sử dụng hợp lý cuộn và phần bù là cần thiết để có được câu trả lời mong muốn

Thí dụ

Ngày làm việc đầu tiên vào hoặc sau một ngày

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
0

Ngày làm việc đầu tiên hoàn toàn sau một ngày

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
1

Hàm này cũng hữu ích để tính toán một số loại ngày như ngày lễ. Ở Canada và U. S. , Ngày của mẹ là vào Chủ nhật thứ hai của tháng Năm, có thể được tính bằng mặt nạ tuần tùy chỉnh

Thí dụ

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
2

Khi hiệu suất là quan trọng để thao tác nhiều ngày làm việc với một lựa chọn cụ thể về mặt nạ trong tuần và ngày lễ, thì có một đối tượng

>>> np.datetime64('2009-01-01') - np.datetime64('2008-01-01')
numpy.timedelta64(366,'D')
8 lưu trữ dữ liệu cần thiết ở dạng tối ưu hóa

np. is_busday()

Để kiểm tra giá trị

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
7 xem đó có phải là ngày hợp lệ hay không, hãy sử dụng
>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
30

Thí dụ

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
3

np. busday_count()

Để tìm xem có bao nhiêu ngày hợp lệ trong một phạm vi datetime64 đã chỉ định, hãy sử dụng

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
31

Thí dụ

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
4

Nếu bạn có một mảng các giá trị datetime64 ngày và bạn muốn đếm xem có bao nhiêu trong số đó là ngày hợp lệ, bạn có thể thực hiện việc này

Thí dụ

>>> np.timedelta64('nAt')
numpy.timedelta64('NaT')
5

Mặt nạ tuần tùy chỉnh

Dưới đây là một số ví dụ về giá trị mặt nạ tuần tùy chỉnh. Những ví dụ này chỉ định mặc định “busday” của Thứ Hai đến Thứ Sáu là những ngày hợp lệ