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

Python - วิธีจัดกลุ่ม Pandas DataFrame ตามวัน?


เราจะจัดกลุ่ม Pandas DataFrame โดยใช้ groupby() เลือกคอลัมน์ที่จะใช้โดยใช้ฟังก์ชัน grouper เราจะจัดกลุ่มตามวันและคำนวณผลรวมของราคาจดทะเบียนพร้อมช่วงวันสำหรับตัวอย่างของเราที่แสดงด้านล่างสำหรับบันทึกการขายรถยนต์

ตั้งค่าความถี่เป็นช่วงเวลาของวันในเมธอด groupby() ซึ่งหมายความว่าหากความถี่เป็น 7D นั่นหมายถึงข้อมูลที่จัดกลุ่มตามช่วงเวลา 7 วันของทุกเดือนจนถึงวันสุดท้ายที่ระบุในคอลัมน์วันที่

ขั้นแรก สมมติว่าต่อไปนี้คือ Pandas DataFrame ของเราที่มีสามคอลัมน์ -

import pandas as pd

# dataframe with one of the columns as Date_of_Purchase
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]
   }
)

จากนั้น ใช้ Grouper เพื่อเลือกคอลัมน์ Date_of_Purchase ภายในฟังก์ชัน groupby ความถี่ถูกกำหนดเป็น 7D นั่นคือช่วง 7 วันจัดกลุ่มจนถึงวันสุดท้ายที่กล่าวถึงในคอลัมน์ -

print"\nGroup Dataframe by 7 days...\n",dataFrame.groupby(pd.Grouper(key='Date_of_Purchase', axis=0, freq='7D')).sum()

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

import pandas as pd

# dataframe with one of the columns as Date_of_Purchase
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...\n",dataFrame

# Grouper to select Date_of_Purchase column within groupby function
print("\nGroup Dataframe by 7 days...\n",dataFrame.groupby(pd.Grouper(key='Date_of_Purchase', axis=0, freq='7D')).sum()
)

ผลลัพธ์

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

DataFrame...
        Car    Date_of_Purchase   Reg_Price
0      Audi      2021-06-10          1000
1     Lexus      2021-07-11          1400
2     Tesla      2021-06-25          1100
3  Mercedes      2021-06-29           900
4       BMW      2021-03-20          1700
5    Toyota      2021-01-22          1800
6    Nissan      2021-01-06          1300
7   Bentley      2021-01-04          1150
8   Mustang      2021-05-09          1350

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-02-08            NaN
2021-02-15            NaN
2021-02-22            NaN
2021-03-01            NaN
2021-03-08            NaN
2021-03-15         1700.0
2021-03-22            NaN
2021-03-29            NaN
2021-04-05            NaN
2021-04-12            NaN
2021-04-19            NaN
2021-04-26            NaN
2021-05-03         1350.0
2021-05-10            NaN
2021-05-17            NaN
2021-05-24            NaN
2021-05-31            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