Pandas: วิธีคำนวณค่าเฉลี่ยเคลื่อนที่ต่อกลุ่ม
คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อคำนวณค่าเฉลี่ยเคลื่อนที่กลุ่มสำหรับแพนด้า:
#calculate 3-period moving average of 'values' by 'group' df. groupby (' group ')[' values ']. transform ( lambda x: x.rolling (3,1) .mean ())
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่าง: คำนวณค่าเฉลี่ยเคลื่อนที่ตามกลุ่มใน Pandas
สมมติว่าเรามี DataFrame แพนด้าต่อไปนี้ที่แสดงยอดขายรวมของร้านค้าสองแห่งในช่วงเวลาการขายห้าช่วง:
import pandas as pd #createDataFrame df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'], ' period ': [1, 2, 3, 4, 5, 1, 2, 3, 4, 5], ' sales ': [7, 7, 9, 13, 14, 13, 13, 19, 20, 26]}) #view DataFrame df store period sales 0 to 1 7 1 to 2 7 2 to 3 9 3 to 4 13 4 to 5 14 5 B 1 13 6 B 2 13 7 B 3 19 8 B 4 20 9 B 5 26
เราสามารถใช้โค้ดต่อไปนี้เพื่อคำนวณยอดขายเฉลี่ยต่อเนื่อง 3 วันสำหรับแต่ละร้านค้า:
#calculate 3-day moving average of sales by store
df[' ma '] = df. groupby (' store ')[' sales ']. transform ( lambda x: x.rolling (3,1) .mean ())
#view updated DataFrame
df
store period sales ma
0 A 1 7 7.000000
1 to 2 7 7.000000
2 A 3 9 7.666667
3 A 4 13 9.666667
4 A 5 14 12.000000
5 B 1 13 13.000000
6 B 2 13 13.000000
7 B 3 19 15.000000
8 B 4 20 17.333333
9 B 5 26 21.666667
หมายเหตุ : x.rolling(3, 1) หมายถึงการคำนวณค่าเฉลี่ยกลิ้งในช่วง 3 ช่วงและกำหนดให้ 1 เป็นจำนวนช่วงขั้นต่ำ
คอลัมน์ “ของฉัน” จะแสดงยอดขายเฉลี่ยเคลื่อนที่ 3 วันสำหรับร้านค้าแต่ละแห่ง
หากต้องการคำนวณค่าเฉลี่ยเคลื่อนที่แบบอื่น เพียงเปลี่ยนค่าในฟังก์ชัน Rolling()
ตัวอย่างเช่น เราอาจคำนวณยอดขายเฉลี่ยเคลื่อนที่ 2 วันสำหรับร้านค้าแต่ละแห่งแทน:
#calculate 2-day moving average of sales by store
df[' ma '] = df. groupby (' store ')[' sales ']. transform ( lambda x: x.rolling (2,1) .mean ())
#view updated DataFrame
df
store period sales ma
0 to 1 7 7.0
1 to 2 7 7.0
2 to 3 9 8.0
3 A 4 13 11.0
4 to 5 14 13.5
5 B 1 13 13.0
6 B 2 13 13.0
7 B 3 19 16.0
8 B 4 20 19.5
9 B 5 26 23.0
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่น ๆ ในแพนด้า:
วิธีดำเนินการผลรวม GroupBy ใน Pandas
วิธีนับค่าที่ไม่ซ้ำโดยใช้ GroupBy ใน Pandas
วิธีใช้ Groupby และ Plot ใน Pandas