Python - 如何按天對 Pandas DataFrame 進行分組?


我們將使用 groupby() 對 Pandas DataFrame 進行分組。使用 grouper 函式來選擇要使用的列。我們將按天分組,並計算我們下面給出的汽車銷售記錄示例中按天的註冊價格總和。

在 groupby() 的 grouper 方法中將頻率設定為天區間,也就是說,如果 freq 是 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 在 groupby 函式中選擇 Date_of_Purchase 列。頻率設定為 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

更新於: 09-Sep-2021

2000 次以上瀏覽

開啟你的職業生涯

完成課程以獲得認證

開始
廣告