Giới thiệu
Để tính rolling mean (trung bình trượt) trong Pandas, chúng ta sử dụng hàm apply() kết hợp với rolling(). Trước tiên, import thư viện cần thiết:
import pandas as pd
Tạo DataFrame với 2 cột:
dataFrame = pd.DataFrame(
{
"Car": ['Tesla', 'Mercedes', 'Tesla', 'Mustang', 'Mercedes', 'Mustang'],
"Reg_Price": [5000, 1500, 6500, 8000, 9000, 6000]
}
)
Nhóm theo cột "Car" và tính Rolling Mean sử dụng apply():
dataFrame.groupby("Car")["Reg_Price"].apply(
lambda x: x.rolling(center=False, window=2).mean()
)
Ví dụ hoàn chỉnh
import pandas as pd
# Tạo DataFrame
dataFrame = pd.DataFrame(
{
"Car": ['Tesla', 'Mercedes', 'Tesla', 'Mustang', 'Mercedes', 'Mustang'],
"Reg_Price": [5000, 1500, 6500, 8000, 9000, 6000]
}
)
print("DataFrame ...\n", dataFrame)
print("\nRolling Mean...\n", dataFrame.groupby("Car")["Reg_Price"].apply(
lambda x: x.rolling(center=False, window=2).mean()
))
Kết quả đầu ra
DataFrame ...
Car Reg_Price
0 Tesla 5000
1 Mercedes 1500
2 Tesla 6500
3 Mustang 8000
4 Mercedes 9000
5 Mustang 6000
Rolling Mean...
0 NaN
1 NaN
2 5750.0
3 NaN
4 5250.0
5 7000.0
Name: Reg_Price, dtype: float64
Giải thích: Giá trị NaN xuất hiện ở những nhóm chỉ có 1 phần tử hoặc vị trí đầu tiên của mỗi nhóm (vì window=2 cần 2 giá trị để tính trung bình).