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

Tính phần trăm thay đổi (pct_change) top 2 và bottom 2 hàng DataFrame

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.