Giả sử bạn muốn tính tỷ lệ thay đổi phần trăm giữa các hàng liên tiếp cho cột Id và Age, sau đó lấy 2 hàng đầu và 2 hàng cuối.
Giải pháp
- Tạo DataFrame.
- Chọn cột ['Id', 'Age'] và áp dụng
.pct_change(). - Lấy 2 hàng đầu:
[0:2](tức hàng 0 và 1). - Lấy 2 hàng cuối:
[-2:](tức hàng 3 và 4).
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("\nId và Age - Top 2 hàng (pct_change):")
print(df[['Id','Age']].pct_change()[0:2])
print("\nId và Age - Bottom 2 hàng (pct_change):")
print(df[['Id','Age']].pct_change()[-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
Id và Age - Top 2 hàng (pct_change):
Id Age
0 NaN NaN
1 1.0 0.0
Id và Age - Bottom 2 hàng (pct_change):
Id Age
3 0.000000 -0.071429
4 0.666667 0.000000
Giải thích:
pct_change()tính(current - previous) / previous.- Hàng 0 luôn NaN vì không có hàng trước.
- Hàng 1: Id từ 1→2 tăng 100% (1.0), Age 12→12 không đổi (0.0).
- Hàng 3: Id NaN→NaN (0.0 do NaN propagation?), Age 14→13 giảm ~7.14%.
- Hàng 4: Id NaN→5 (0.6667?), Age 13→NaN (0.0). Lưu ý: Kết quả có thể khác tùy phiên bản pandas xử lý NaN.