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

Python – Kiểm tra ngày bị thiếu (missing dates) trong Pandas

Tìm các ngày bị thiếu trong một dãy ngày liên tục. Sử dụng pd.date_range() tạo dãy ngày đầy đủ, sau đó difference() với index của DataFrame.

Tạo DataFrame

import pandas as pd

d = {
    'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
    'Date_of_purchase': ['2020-10-10', '2020-10-12', '2020-10-17', '2020-10-16', '2020-10-19', '2020-10-22']
}

dataFrame = pd.DataFrame(d)
print("DataFrame gốc:\n", dataFrame)

Tìm ngày thiếu

# Đặt cột ngày làm index
dataFrame = dataFrame.set_index('Date_of_purchase')

# Chuyển index sang datetime
dataFrame.index = pd.to_datetime(dataFrame.index)

# Tạo dãy ngày đầy đủ từ 10/10 đến 22/10
full_range = pd.date_range(start="2020-10-10", end="2020-10-22")

# Tìm ngày không có trong index
missing_dates = full_range.difference(dataFrame.index)

print("\nCác ngày bị thiếu:")
print(missing_dates)

Kết quả

DataFrame gốc...
       Car Date_of_purchase
0      BMW       2020-10-10
1    Lexus       2020-10-12
2     Audi       2020-10-17
3 Mercedes       2020-10-16
4   Jaguar       2020-10-19
5  Bentley       2020-10-22

Các ngày bị thiếu:
DatetimeIndex(['2020-10-11', '2020-10-13', '2020-10-14', '2020-10-15',
               '2020-10-18', '2020-10-20', '2020-10-21'],
              dtype='datetime64[ns]', freq=None)

Giải thích

  • set_index('Date_of_purchase') đưa cột ngày làm index.
  • pd.to_datetime() chuyển chuỗi sang Timestamp để so sánh chính xác.
  • pd.date_range(start, end) tạo dãy ngày liên tục (mặc định freq='D').
  • difference() trả về các ngày có trong dãy đầy đủ nhưng không có trong index DataFrame.

Ứng dụng: kiểm tra tính liên tục của dữ liệu chuỗi thời gian, phát hiện lỗi thu thập dữ liệu.