Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python – จัดกลุ่ม Pandas DataFrame ตามวัน (Group by Days)

บทความนี้สาธิตวิธีจัดกลุ่มข้อมูลใน Pandas DataFrame ตามช่วงเวลาวัน (Time-based Grouping) โดยใช้ pd.Grouper ร่วมกับ groupby()

โค้ดตัวอย่าง

import pandas as pd

# สร้าง DataFrame พร้อม Timestamp
dataFrame = pd.DataFrame({
    "Car": ["Audi", "Lexus", "Tesla", "Mercedes", "BMW", "Toyota", "Nissan", "Bentley", "Mustang"],
    "Date_of_Purchase": [
        pd.Timestamp("2021-06-10"),
        pd.Timestamp("2021-07-11"),
        pd.Timestamp("2021-06-25"),
        pd.Timestamp("2021-06-29"),
        pd.Timestamp("2021-03-20"),
        pd.Timestamp("2021-01-22"),
        pd.Timestamp("2021-01-06"),
        pd.Timestamp("2021-01-04"),
        pd.Timestamp("2021-05-09")
    ],
    "Reg_Price": [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]
})

print("DataFrame ต้นฉบับ:")
print(dataFrame)

# จัดกลุ่มทุก 7 วัน (7D = 7 Days)
# key: คอลัมน์วันที่, freq: ความถี่, axis=0: จัดกลุ่มตามแถว
grouped = dataFrame.groupby(pd.Grouper(key='Date_of_Purchase', axis=0, freq='7D')).sum()

print("\nGroup DataFrame by 7 days (Sum of Reg_Price):")
print(grouped)

ผลลัพธ์

Group DataFrame by 7 days...
            Reg_Price
Date_of_Purchase       
2021-01-04       2450.0
2021-01-11          NaN
2021-01-18       1800.0
2021-01-25          NaN
2021-02-01          NaN
...
2021-06-07       1000.0
2021-06-14          NaN
2021-06-21       1100.0
2021-06-28        900.0
2021-07-05       1400.0

อธิบาย Frequency Strings

Codeความหมายตัวอย่าง
Dวัน (Day)'1D', '7D', '14D'
Wสัปดาห์ (Week)'W', '2W'
Mสิ้นเดือน (Month End)'M', '3M'
MSต้นเดือน (Month Start)'MS'
Qไตรมาส (Quarter)'Q', 'Q-JAN'
Yสิ้นปี (Year End)'Y', 'A'
Hชั่วโมง (Hour)'H', '6H'
T / minนาที (Minute)'30T', '15min'

การจัดการ NaN (ช่วงที่ไม่มีข้อมูล)

# เติม 0 แทน NaN
grouped_filled = grouped.fillna(0).astype({'Reg_Price': 'int64'})

# หรือลบช่วงที่ไม่มีข้อมูล
grouped_dropped = grouped.dropna()

การประยุกต์ใช้

  • ยอดขายรายสัปดาห์/รายเดือน (Sales Reporting)
  • IoT Sensor Data: Resample ข้อมูลความถี่สูงเป็นช่วงต่ำกว่า
  • Financial: OHLC Resampling
  • Log Analysis: นับ Events ต่อช่วงเวลา