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=2chỉ á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'.