Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python Pandas - Căn chỉnh timestamp DateTimeIndex đến tần suất gần nhất

Để căn chỉnh (snap) các timestamp trong DateTimeIndex đến tần suất xuất hiện gần nhất, sử dụng phương thức DateTimeIndex.snap() với tham số freq.

Các bước thực hiện

1. Import thư viện

import pandas as pd

2. Tạo DateTimeIndex

Tần suất ngày (D), 6 kỳ, múi giờ Australia/Adelaide:

datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=6, tz='Australia/Adelaide', freq='D')

3. Snap đến cuối tháng (Month end)

print("\nSnap đến tần suất gần nhất (Month end):\n", datetimeindex.snap(freq='M'))

Ví dụ hoàn chỉnh

import pandas as pd

datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=6, tz='Australia/Adelaide', freq='D')

print("DateTimeIndex:\n", datetimeindex)
print("\nTần suất:", datetimeindex.freq)

# Snap đến Month end (M)
print("\nSnap đến Month end:\n", datetimeindex.snap(freq='M'))

Kết quả đầu ra

DateTimeIndex:
DatetimeIndex(['2021-10-20 02:30:50+10:30', '2021-10-21 02:30:50+10:30', '2021-10-22 02:30:50+10:30', '2021-10-23 02:30:50+10:30', '2021-10-24 02:30:50+10:30', '2021-10-25 02:30:50+10:30'], dtype='datetime64[ns, Australia/Adelaide]', freq='D')
Tần suất: 
Snap đến tần suất gần nhất:
DatetimeIndex(['2021-10-31 02:30:50+10:30', '2021-10-31 02:30:50+10:30', '2021-10-31 02:30:50+10:30', '2021-10-31 02:30:50+10:30', '2021-10-31 02:30:50+10:30', '2021-10-31 02:30:50+10:30'], dtype='datetime64[ns, Australia/Adelaide]', freq=None)

Giải thích

  • Tất cả 6 ngày (20-25/10) đều được snap đến 31/10/2021 (cuối tháng 10).
  • snap() di chuyển timestamp đến mốc tần suất gần nhất (có thể trước hoặc sau).
  • Khác với round(): snap dùng offset anchored (như month end, quarter end), round dùng fixed frequency.

Các anchored offset thường dùng

'M'   # Month end
'MS'  # Month start
'Q'   # Quarter end
'QS'  # Quarter start
'A'   # Year end
'AS'  # Year start
'W'   # Week end (Sunday)
'W-MON' # Week end Monday

Lưu ý

snap() ít dùng hơn round(), floor(), ceil(). Thường dùng trong xử lý dữ liệu tài chính cần căn chỉnh đến kỳ báo cáo.