Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – 날짜 조건으로 DataFrame 필터링하는 방법

loc 속성에 날짜 조건을 설정하면 특정 시간(날짜)을 기준으로 DataFrame의 레코드를 간단하게 필터링할 수 있습니다. 이번 글에서는 구매일자가 특정 날짜 이후인 자동차 데이터만 추출하는 예제를 단계별로 살펴보겠습니다.

1. 라이브러리 임포트

먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd

2. 데이터 준비 및 DataFrame 생성

날짜 정보가 포함된 딕셔너리 형태의 리스트를 생성합니다.

d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
     'Date_of_Purchase': ['2021-07-10', '2021-08-12', '2021-06-17',
                          '2021-03-16', '2021-05-19', '2021-08-22']
}

위 딕셔너리를 사용해 DataFrame을 만듭니다.

dataFrame = pd.DataFrame(d)

3. loc으로 날짜 조건 필터링

예를 들어 2021년 7월 15일 이후에 구매한 자동차 데이터만 가져오고 싶다면, loc 안에 비교 조건을 지정하면 됩니다.

resDF = dataFrame.loc[dataFrame["Date_of_Purchase"] > "2021-07-15"]

전체 예제 코드

지금까지의 내용을 하나로 합친 전체 코드는 다음과 같습니다.

import pandas as pd

# 리스트로 구성된 딕셔너리 생성
d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
     'Date_of_Purchase': ['2021-07-10', '2021-08-12', '2021-06-17',
                          '2021-03-16', '2021-05-19', '2021-08-22']
}

# 딕셔너리로 DataFrame 생성
dataFrame = pd.DataFrame(d)
print("DataFrame...\n", dataFrame)

# 2021년 7월 15일 이후에 구매한 자동차 조회
resDF = dataFrame.loc[dataFrame["Date_of_Purchase"] > "2021-07-15"]

# 필터링된 DataFrame 출력
print("\n2021년 7월 15일 이후 구매한 자동차:\n", resDF)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

DataFrame...
        Car   Date_of_Purchase
0       BMW          2021-07-10
1      Lexus          2021-08-12
2       Audi          2021-06-17
3   Mercedes          2021-03-16
4     Jaguar          2021-05-19
5    Bentley          2021-08-22

2021년 7월 15일 이후 구매한 자동차:
       Car   Date_of_Purchase
1    Lexus         2021-08-12
5  Bentley         2021-08-22

추가 팁: datetime 타입 변환 활용하기

날짜 문자열이 'YYYY-MM-DD' 형식이라면 위처럼 문자열 비교만으로도 올바른 결과를 얻을 수 있습니다. 다만 더 안전하고 유연한 날짜 처리를 위해서는 pd.to_datetime()으로 해당 열을 datetime 타입으로 변환한 뒤 비교하는 것이 좋습니다.

dataFrame["Date_of_Purchase"] = pd.to_datetime(dataFrame["Date_of_Purchase"])
resDF = dataFrame.loc[dataFrame["Date_of_Purchase"] > "2021-07-15"]

이렇게 하면 월·일 단위 범위 검색, 날짜 연산 등 훨씬 다양한 시간 기반 필터링 작업도 손쉽게 수행할 수 있습니다.