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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *