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

Điền giá trị thiếu trong DataFrame bằng nội suy tuyến tính Python

Giả sử bạn có DataFrame chứa giá trị NaN và muốn điền chúng bằng phương pháp nội suy (interpolation).

Giải pháp

  • Tạo DataFrame có giá trị thiếu.
  • Sử dụng df.interpolate(method='linear', limit_direction='forward', limit=2).

Tham số:

  • method='linear': Nội suy tuyến tính (mặc định).
  • limit_direction='forward': Chỉ điền tiến về phía trước.
  • limit=2: Tối đa 2 giá trị NaN liên tiếp được điền.

Mã ví dụ

import pandas as pd

df = pd.DataFrame({
    "Id": [1, 2, 3, None, 5],
    "Age": [12, 12, 14, 13, None],
    "Mark": [80, 90, None, 95, 85]
})

print("DataFrame gốc:\n", df)
print("\nSau khi nội suy:")
print(df.interpolate(method='linear', limit_direction='forward', limit=2))

Kết quả

DataFrame gốc:
     Id   Age  Mark
0  1.0  12.0  80.0
1  2.0  12.0  90.0
2  3.0  14.0   NaN
3  NaN  13.0  95.0
4  5.0   NaN  85.0

Sau khi nội suy:
     Id   Age  Mark
0  1.0  12.0  80.0
1  2.0  12.0  90.0
2  3.0  14.0  92.5
3  4.0  13.0  95.0
4  5.0  13.0  85.0

Giải thích:

  • Cột Mark: Giá trị NaN tại hàng 2 được nội suy thành 92.5 (trung bình 90 và 95).
  • Cột Id: Giá trị NaN tại hàng 3 được điền thành 4.0 (nội suy giữa 3 và 5).
  • Cột Age: Giá trị NaN tại hàng 4 không được điền vì limit=2 chỉ áp dụng cho chuỗi NaN liên tiếp, còn đây là NaN đơn lẻ ở cuối (hoặc do limit_direction='forward' không điền ngược).

Để điền tất cả NaN, bỏ tham số limit hoặc đặt limit_direction='both'.