Pandas: วิธีสุ่มตัวอย่างอนุกรมเวลาด้วย groupby ()
การสุ่มตัวอย่าง ข้อมูลอนุกรมเวลาหมายถึงการรวมข้อมูลในช่วงเวลาใหม่
หากคุณต้องการสุ่มตัวอย่างอนุกรมเวลาในแพนด้าอีกครั้งโดยใช้ตัวดำเนินการ groupby คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้:
group = df. groupby ([pd. Group (freq=' W '), ' store ']) result = group[' sales ']. sum (). unstack (' store '). fillna (0)
ตัวอย่างนี้จัดกลุ่มแถวของ DataFrame ตามคอลัมน์ ร้านค้า จากนั้นสุ่มอนุกรมเวลาใหม่ตามสัปดาห์ ( freq=’W’ ) จากนั้นคำนวณผลรวมของค่าในคอลัมน์ ยอดขาย
โปรดทราบว่าเราสามารถสุ่มตัวอย่างข้อมูลอนุกรมเวลาใหม่ตามช่วงเวลาต่างๆ ได้ ซึ่งรวมถึง:
- ส : วินาที
- นาที : นาที
- ช : ชั่วโมง
- เจ :เดย์
- ว : สัปดาห์
- ม : เดือน
- ถาม : ไตรมาส
- ตอบ : ปี
ตัวอย่างต่อไปนี้แสดงวิธีการสุ่มตัวอย่างข้อมูลอนุกรมเวลาด้วยการดำเนินการ groupby ในทางปฏิบัติ
ตัวอย่าง: สุ่มตัวอย่างอนุกรมเวลาด้วย groupby ใน Pandas
สมมติว่าเรามี DataFrame แพนด้าต่อไปนี้ซึ่งแสดงยอดขายรวมในแต่ละวันในร้านค้าสองแห่งที่แตกต่างกัน:
import pandas as pd #createDataFrame df = pd. DataFrame ({' sales ': [13, 14, 17, 17, 16, 22, 28, 10, 17, 10, 11], ' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B']} , index=pd. date_range ('2023-01-06', '2023-01-16', freq='d')) #view DataFrame print (df) sales store 2023-01-06 13 A 2023-01-07 14 A 2023-01-08 17 A 2023-01-09 17 A 2023-01-10 16A 2023-01-11 22 B 2023-01-12 28 B 2023-01-13 10 B 2023-01-14 17 B 2023-01-15 10 B 2023-01-16 11 B
สมมติว่าเราต้องการจัดกลุ่มแถวตาม ร้านค้า จากนั้นสุ่มตัวอย่างอนุกรมเวลาตามสัปดาห์ จากนั้นคำนวณผลรวมของค่าในคอลัมน์ ยอดขาย
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อทำสิ่งนี้:
#group by store and resample time series by week group = df. groupby ([pd. Group (freq=' W '), ' store ']) #calculate sum of sales each week by store result = group[' sales ']. sum (). unstack (' store '). fillna (0) #view results print (result) store AB 2023-01-08 14.0 0.0 2023-01-15 16.5 17.0 2023-01-22 0.0 11.0
จากผลลัพธ์เราจะเห็นได้ว่า:
- ผลรวมยอดขายสำหรับสัปดาห์สิ้นสุดวันที่ 01/08/2023 ในร้าน A คือ 14
- ผลรวมยอดขายสำหรับสัปดาห์สิ้นสุดวันที่ 01/08/2023 ในร้านค้า B คือ 0
และอื่นๆ
โปรดทราบว่าในตัวอย่างนี้ เราได้เลือกที่จะคำนวณผลรวมของมูลค่าในคอลัมน์ ยอดขาย
อย่างไรก็ตาม เราสามารถเลือกเมตริกอื่นๆ ได้ เช่น จำนวน ค่าเฉลี่ย ค่ามัธยฐาน ค่าต่ำสุด ค่าสูงสุด เป็นต้น
เพียงแทนที่ sum() ในโค้ดด้านบนด้วย count() , Mean() , Median() ฯลฯ เพื่อคำนวณหน่วยเมตริกที่คุณเลือก
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน Python:
วิธีพล็อตอนุกรมเวลาใน Matplotlib
วิธีพล็อตลำดับเวลาใน Seaborn
วิธีการคำนวณ MAPE จากอนุกรมเวลาใน Python