วิธีจัดกลุ่มตามสัปดาห์ใน pandas dataframe (พร้อมตัวอย่าง)


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อจัดกลุ่มแถวตามสัปดาห์ใน DataFrame ของแพนด้า:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' values ']. sum ()

สูตรเฉพาะนี้จัดกลุ่มแถวตามสัปดาห์ในคอลัมน์ วันที่ และคำนวณผลรวมของค่าสำหรับคอลัมน์ ของค่า ใน DataFrame

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่าง: วิธีจัดกลุ่มตามสัปดาห์ที่ Pandas

สมมติว่าเรามี DataFrame แพนด้าต่อไปนี้ซึ่งแสดงยอดขายของบริษัทในวันที่ต่างกัน:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' date ': pd. date_range (start='1/5/2022', freq='D', periods=15),
                   ' sales ': [6, 8, 9, 5, 4, 8, 8, 3, 5, 9, 8, 3, 4, 7, 7]})

#view DataFrame
print (df)

         dirty date
0 2022-01-05 6
1 2022-01-06 8
2 2022-01-07 9
3 2022-01-08 5
4 2022-01-09 4
5 2022-01-10 8
6 2022-01-11 8
7 2022-01-12 3
8 2022-01-13 5
9 2022-01-14 9
10 2022-01-15 8
11 2022-01-16 3
12 2022-01-17 4
13 2022-01-18 7
14 2022-01-19 7

ที่เกี่ยวข้อง: วิธีสร้างช่วงวันที่ในนุ่น

เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อคำนวณผลรวมของยอดขายที่จัดกลุ่มตามสัปดาห์:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. sum ()

date
2022-01-02 32
2022-01-09 44
2022-01-16 18
Freq: W-SUN, Name: sales, dtype: int64

ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:

  • มียอดขายทั้งหมด 32 รายการในช่วงสัปดาห์เริ่มต้นวันหลังจาก 1/2/2022
  • มียอดขายทั้งหมด 44 รายการ ในช่วงสัปดาห์เริ่มต้นวันหลังจาก 01/09/2022
  • มียอดขายทั้งหมด 18 รายการ ในช่วงสัปดาห์เริ่มต้นวันหลังจากวันที่ 16/01/2022

ควรสังเกตว่าตามค่าเริ่มต้น แพนด้าจะถือว่าสัปดาห์เริ่มต้นหลังจากวันอาทิตย์ ( W-SUN )

อย่างไรก็ตาม ตาม เอกสารประกอบ คุณสามารถเปลี่ยนค่านี้เป็น Freq ได้

ตัวอย่างเช่น คุณสามารถระบุ Freq=W-MON หากคุณต้องการให้แต่ละสัปดาห์เริ่มต้นวันหลังจากวันจันทร์ (เช่น วันอังคาร)

เราสามารถใช้ไวยากรณ์ที่คล้ายกันเพื่อคำนวณมูลค่าการขายสูงสุดที่จัดกลุ่มตามสัปดาห์:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate max of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. max ()

date
2022-01-02 9
2022-01-09 9
2022-01-16 7
Freq: W-SUN, Name: sales, dtype: int64

ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:

  • ยอดขายสูงสุดต่อวันในช่วงสัปดาห์ที่เริ่มต้นวันหลัง 01/02/2022 คือ 9
  • จำนวนยอดขายสูงสุดต่อวันในช่วงสัปดาห์ที่เริ่มต้นวันหลัง 01/9/2022 คือ 9
  • จำนวนยอดขายสูงสุดต่อวันในช่วงสัปดาห์ที่เริ่มต้นวันหลังจาก 16/01/2022 คือ 7

หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มของการดำเนินการ groupby ใน pandas ได้ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่น ๆ ในแพนด้า:

วิธีจัดกลุ่มตามเดือนใน Pandas DataFrame
วิธีจัดกลุ่มตามวันใน Pandas DataFrame
วิธีใช้ Groupby และนับแบบมีเงื่อนไขใน Pandas

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

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