แสดงค่าเฉลี่ยเคลื่อนที่
นอกจากนี้ยังสามารถแสดงค่าเฉลี่ยเคลื่อนที่ (rolling average) ของข้อมูลในอนุกรมเวลาได้อีกด้วย วิธีนี้เทียบได้กับการ "ทำให้ข้อมูลเรียบขึ้น" (smoothing) ซึ่งมีประโยชน์มากเมื่ออนุกรมเวลามีสัญญาณรบกวนหรือค่าผิดปกติจำนวนมาก สำหรับ DataFrame df ที่กำหนด สามารถคำนวณค่าเฉลี่ยเคลื่อนที่ของอนุกรมเวลาได้ด้วยคำสั่งต่อไปนี้:
df_mean = df.rolling(window=12).mean()
ค่าพารามิเตอร์ window ควรกำหนดให้สอดคล้องกับความละเอียดของอนุกรมเวลา ตัวอย่างเช่น หากข้อมูลเป็นรายวันและต้องการหาค่าเคลื่อนที่ตลอดทั้งปี ให้กำหนดเป็น window=365 นอกจากนี้ยังสามารถคำนวณค่าเคลื่อนที่ของเมตริกอื่นๆ ได้ง่ายๆ เช่น ส่วนเบี่ยงเบนมาตรฐาน (.std()) หรือความแปรปรวน (.var())
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การแสดงภาพข้อมูล Time Series ด้วย Python
คำแนะนำการฝึกหัด
- คำนวณค่าเฉลี่ยเคลื่อนที่ 52 สัปดาห์ของ
co2_levelsแล้วกำหนดให้กับตัวแปรma - คำนวณส่วนเบี่ยงเบนมาตรฐานเคลื่อนที่ 52 สัปดาห์ของ
co2_levelsแล้วกำหนดให้กับตัวแปรmstd - คำนวณขอบเขตบนของอนุกรมเวลา ซึ่งนิยามเป็นค่าเฉลี่ยเคลื่อนที่ + (2 * ส่วนเบี่ยงเบนมาตรฐานเคลื่อนที่) แล้วกำหนดให้กับ
ma[upper]จากนั้นคำนวณขอบเขตล่างเป็นค่าเฉลี่ยเคลื่อนที่ - (2 * ส่วนเบี่ยงเบนมาตรฐานเคลื่อนที่) แล้วกำหนดให้กับma[lower] - พล็อตกราฟเส้นของ
ma
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Compute the 52 weeks rolling mean of the co2_levels DataFrame
ma = ____.rolling(window=____).____()
# Compute the 52 weeks rolling standard deviation of the co2_levels DataFrame
mstd = ____
# Add the upper bound column to the ma DataFrame
ma['upper'] = ma['co2'] + (____ * ____)
# Add the lower bound column to the ma DataFrame
ma['lower'] = ma['co2'] - (____ * ____)
# Plot the content of the ma DataFrame
ax = ____(linewidth=0.8, fontsize=6)
# Specify labels, legend, and show the plot
ax.set_xlabel('Date', fontsize=10)
ax.set_ylabel('CO2 levels in Mauai Hawaii', fontsize=10)
ax.set_title('Rolling mean and variance of CO2 levels\nin Mauai Hawaii from 1958 to 2001', fontsize=10)
plt.show()