Computer >> Máy Tính >  >> Lập trình >> Python

Python - Làm thế nào để nhóm Pandas DataFrame theo ngày?

Chúng tôi sẽ nhóm các Pandas DataFrame bằng cách sử dụng groupby (). Chọn cột sẽ được sử dụng bằng chức năng cá mú. Chúng tôi sẽ nhóm theo ngày và tính toán tổng Giá đăng ký với khoảng thời gian trong ngày cho ví dụ của chúng tôi được hiển thị bên dưới cho Hồ sơ bán xe.

Đặt tần suất dưới dạng khoảng ngày trong phương pháp cá mú (), có nghĩa là, nếu tần suất là 7D, điều đó có nghĩa là dữ liệu được nhóm theo khoảng thời gian 7 ngày của mỗi tháng cho đến ngày cuối cùng được đưa ra trong cột ngày.

Đầu tiên, giả sử như sau là Pandas DataFrame của chúng tôi với ba cột -

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]
   }
)

Tiếp theo, sử dụng Grouper để chọn cột Date_of_Purchase trong hàm theo nhóm. Tần suất được đặt 7D tức là khoảng 7 ngày được nhóm lại cho đến ngày cuối cùng được đề cập trong cột -

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

Ví dụ

Sau đây là mã -

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()
)

Đầu ra

Điều này sẽ tạo ra kết quả sau -

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