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

Python - Làm thế nào để nhóm Pandas DataFrame theo phút?

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 phút khôn ngoan và tính toán tổng Giá đăng ký với khoảng cách phút cho ví dụ của chúng tôi được hiển thị bên dưới cho Hồ sơ bán xe.

Đầu tiên, giả sử như sau là Pandas DataFrame của chúng tôi với ba cột. Chúng tôi đã đặt Date_of_Purchase với dấu thời gian, bao gồm cả Ngày và Giờ -

dataFrame = pd.DataFrame(
   {
      "Car": ["Audi", "Lexus", "Tesla", "Mercedes", "BMW", "Toyota", "Nissan", "Bentley", "Mustang"],

      "Date_of_Purchase": [
         pd.Timestamp("2021-07-28 00:10:00"),
         pd.Timestamp("2021-07-28 00:12:00"),
         pd.Timestamp("2021-07-28 00:15:00"),
         pd.Timestamp("2021-07-28 00:16:00"),
         pd.Timestamp("2021-07-28 00:17:00"),
         pd.Timestamp("2021-07-28 00:20:00"),
         pd.Timestamp("2021-07-28 00:35:00"),
         pd.Timestamp("2021-07-28 00:42:00"),
         pd.Timestamp("2021-07-28 00:57:00"),
      ],

      "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 là 7 phút, tức là khoảng thời gian 7 phút được nhóm lại -

print"\nGroup Dataframe by 7 minutes...\n",dataFrame.groupby(pd.Grouper(key='Date_of_Purchase', axis=0, freq='7min')).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-07-28 00:10:00"),
         pd.Timestamp("2021-07-28 00:12:00"),
         pd.Timestamp("2021-07-28 00:15:00"),
         pd.Timestamp("2021-07-28 00:16:00"),
         pd.Timestamp("2021-07-28 00:17:00"),
         pd.Timestamp("2021-07-28 00:20:00"),
         pd.Timestamp("2021-07-28 00:35:00"),
         pd.Timestamp("2021-07-28 00:42:00"),
         pd.Timestamp("2021-07-28 00:57:00"),
      ],

      "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 minutes...\n",dataFrame.groupby(pd.Grouper(key='Date_of_Purchase', axis=0, freq='7min')).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-07-28 00:10:00        1000
1     Lexus 2021-07-28 00:12:00        1400
2     Tesla 2021-07-28 00:15:00        1100
3  Mercedes 2021-07-28 00:16:00         900
4       BMW 2021-07-28 00:17:00        1700
5    Toyota 2021-07-28 00:20:00        1800
6    Nissan 2021-07-28 00:35:00        1300
7   Bentley 2021-07-28 00:42:00        1150
8   Mustang 2021-07-28 00:57:00        1350

Group Dataframe by 7 minutes...
                    Reg_Price
Date_of_Purchase
2021-07-28 00:07:00    2400.0
2021-07-28 00:14:00    5500.0
2021-07-28 00:21:00       NaN
2021-07-28 00:28:00       NaN
2021-07-28 00:35:00    1300.0
2021-07-28 00:42:00    1150.0
2021-07-28 00:49:00       NaN
2021-07-28 00:56:00    1350.0