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

Tìm Rolling Mean (Trung bình trượt) với Python Pandas

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).