Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python - Pandas DataFrame을 연도별로 그룹화하는 방법은 무엇입니까?

<시간/>

groupby()를 사용하여 Pandas DataFrame을 그룹화합니다. 그룹화 기능을 사용하여 사용할 열을 선택합니다. 자동차 판매 기록에 대해 아래에 표시된 예에 대해 연도별로 그룹화하고 등록 가격 합계를 연도 간격으로 계산합니다.

먼저 다음이 3개의 열이 있는 Pandas DataFrame이라고 가정해 보겠습니다.

# 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("2019-07-11"),
         pd.Timestamp("2016-06-25"),
         pd.Timestamp("2021-06-29"),
         pd.Timestamp("2020-03-20"),
         pd.Timestamp("2019-01-22"),
         pd.Timestamp("2011-01-06"),
         pd.Timestamp("2013-01-04"),
         pd.Timestamp("2014-05-09")
      ],
      "Reg_Price": [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]
   }
)

그런 다음 Grouper를 사용하여 groupby 함수 내에서 Date_of_Purchase 열을 선택합니다. 빈도는 3Y, 즉 3년 간격으로 그룹화되어 설정됩니다.

다음은 코드입니다 -

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("2019-07-11"),
         pd.Timestamp("2016-06-25"),
         pd.Timestamp("2021-06-29"),
         pd.Timestamp("2020-03-20"),
         pd.Timestamp("2019-01-22"),
         pd.Timestamp("2011-01-06"),
         pd.Timestamp("2013-01-04"),
         pd.Timestamp("2014-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 3 years...\n",dataFrame.groupby(pd.Grouper(key='Date_of_Purchase', axis=0, freq='3Y')).sum())

출력

이것은 다음과 같은 출력을 생성합니다 -

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

Group Dataframe by 3 years...
Reg_Price
Date_of_Purchase
2011-12-31 1300
2014-12-31 2500
2017-12-31 1100
2020-12-31 4900
2023-12-31 1900