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

Python Pandas - Phát hiện tần suất của DateTimeIndex

Để phát hiện (infer) tần suất của đối tượng DateTimeIndex, sử dụng thuộc tính DateTimeIndex.inferred_freq.

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

1. Import thư viện

import pandas as pd

2. Tạo DateTimeIndex có tần suất rõ ràng

Tần suất 3 năm (3Y), 5 kỳ:

datetimeindex = pd.date_range('2021-10-30 02:30:50', periods=5, tz='Australia/Adelaide', freq='3Y')

3. Hiển thị tần suất khai báo và inferred

print("DateTimeIndex:\n", datetimeindex)
print("\nTần suất khai báo (freq):\n", datetimeindex.freq)
print("\nTần suất inferred:\n", datetimeindex.inferred_freq)

Ví dụ hoàn chỉnh

import pandas as pd

datetimeindex = pd.date_range('2021-10-30 02:30:50', periods=5, tz='Australia/Adelaide', freq='3Y')

print("DateTimeIndex:\n", datetimeindex)
print("\nTần suất khai báo (freq):\n", datetimeindex.freq)
print("\nTần suất inferred:\n", datetimeindex.inferred_freq)

Kết quả đầu ra

DateTimeIndex:
DatetimeIndex(['2021-12-31 02:30:50+10:30', '2024-12-31 02:30:50+10:30', '2027-12-31 02:30:50+10:30', '2030-12-31 02:30:50+10:30', '2033-12-31 02:30:50+10:30'], dtype='datetime64[ns, Australia/Adelaide]', freq='3A-DEC')
Tần suất khai báo (freq):
<3 * YearEnds: month=12>
Tần suất inferred:
3A-DEC

Giải thích

  • freq: Tần suất khai báo khi tạo (có thể là None nếu tạo từ list timestamp).
  • inferred_freq: Pandas phân tích dữ liệu để đoán tần suất (dùng khi freq=None).
  • Kết quả 3A-DEC = 3 Year Ends anchored at December (cuối năm).

Khi nào dùng inferred_freq?

  • DateTimeIndex tạo từ dữ liệu thô (list timestamp) không có freq.
  • Kiểm tra tính đều đặn của time series.
  • Trước khi resample/asfreq cần biết freq.

Lưu ý

  • Cần ít nhất 3 timestamp để infer.
  • Nếu dữ liệu không đều → trả về None.
  • Anchored offset (M, Q, A) phức tạp hơn fixed offset (D, H, T).