ลดนอยส์ด้วยค่าเฉลี่ยเคลื่อนที่

Visualize

ลดนอยส์ด้วยค่าเฉลี่ยเคลื่อนที่

Created: Last updated: Read time: 1 min

การซ้อนค่าเฉลี่ยเคลื่อนที่บนข้อมูลรายวันช่วยลดความผันผวนระยะสั้นแต่ยังคงแนวโน้มหลักไว้ pandas.Series.rolling ทำให้คำนวณค่าดังกล่าวได้สะดวก

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

rng = pd.date_range("2024-01-01", periods=60, freq="D")
sales = pd.Series(np.random.normal(loc=200, scale=25, size=len(rng))).cumsum() + 500
rolling = sales.rolling(window=7, center=True).mean()

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(rng, sales, label="ยอดขายรายวัน", color="#9ca3af", linewidth=1.5, alpha=0.7)
ax.plot(rng, rolling, label="ค่าเฉลี่ยเคลื่อนที่ 7 วัน", color="#2563eb", linewidth=2.5)

ax.set_ylabel("ยอดขาย (หมื่นเยน)")
ax.set_title("มองเทรนด์ยอดขายด้วยค่าเฉลี่ยเคลื่อนที่")
ax.legend()
ax.grid(alpha=0.3)

fig.tight_layout()

plt.show()

คำนวณ rolling mean ด้วย pandas แล้ววางทับบนข้อมูลรายวันเพื่ออ่านเทรนด์

สิ่งที่ควรจำ #

  • กำหนดขนาดหน้าต่างให้ตรงกับโจทย์ เช่น 7 วันสำหรับมุมมองรายสัปดาห์หรือ 30 วันสำหรับรายเดือน
  • ควรแสดงข้อมูลดิบควบคู่กัน เพื่อไม่ให้พลาดฤดูกาลหรือเหตุการณ์พิเศษที่เกิดขึ้นฉับพลัน
  • ถ้าชุดข้อมูลมีค่าว่าง ให้จัดการเติมก่อน จะได้เส้นค่าเฉลี่ยที่ไม่สะดุด