Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การหาค่า Rolling Mean (ค่าเฉลี่ยเคลื่อนที่) ด้วย Python Pandas

ภาพรวม

Rolling Mean หรือค่าเฉลี่ยเคลื่อนที่ ใช้วิเคราะห์แนวโน้มข้อมูลอนุกรมเวลา (time series) โดยใช้เมธอด rolling() ร่วมกับ apply() หรือเรียก mean() โดยตรง

ขั้นตอนการทำงาน

  • Import pandas
  • สร้าง DataFrame ที่มีคอลัมน์หมวดหมู่ (Car) และค่าตัวเลข (Reg_Price)
  • จัดกลุ่มด้วย groupby() แล้วใช้ rolling(window=2).mean()

ตัวอย่างโค้ด

import pandas as pd

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

ผลลัพธ์

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

คำอธิบาย

  • window=2 หมายถึงค่าเฉลี่ยของ 2 แถวล่าสุด
  • center=False (ค่าเริ่มต้น) ใช้ค่าก่อนหน้า ไม่รวมค่าปัจจุบัน
  • แถวแรกของแต่ละกลุ่มจะเป็น NaN เพราะไม่มีข้อมูลก่อนหน้าเพียงพอ
  • วิธีสั้นๆ: dataFrame.groupby("Car")["Reg_Price"].rolling(2).mean()