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

Python Pandas – 조건에 따라 DataFrame 행을 선택하는 방법

Pandas에서는 조건을 설정해 DataFrame에서 원하는 행만 손쉽게 추출할 수 있습니다. 이때 조건식은 논리 연산자(and, or, not)와 관계 연산자(<, >, == 등)을 활용해 구성하며, 두 가지를 조합하면 더욱 복잡한 필터링도 간결하게 처리할 수 있습니다.

1. 필요한 라이브러리 불러오기

먼저 pandas 라이브러리를 임포트합니다.

import pandas as pd

2. CSV 파일로 DataFrame 생성하기

read_csv() 메서드를 사용해 CSV 파일을 읽어와 DataFrame을 만들어 보겠습니다.

dataFrame = pd.read_csv("C:\Users\amit_\Desktop\SalesRecords.csv")

3. 관계 연산자를 사용한 행 선택

이번 예제에서는 등록 가격(Reg_Price)이 1000 미만인 행만 추출해 보겠습니다. 관계 연산자를 사용하면 아래와 같이 한 줄로 간단히 처리할 수 있습니다.

dataFrame[dataFrame.Reg_Price < 1000]

대괄호 안의 조건식은 각 행마다 True 또는 False를 담은 불리언(Boolean) 시리즈를 반환하며, True에 해당하는 행만 걸러져 새로운 DataFrame으로 돌아옵니다. 동작 방식이 SQL의 WHERE 절과 비슷하다고 생각하면 이해하기 쉽습니다.

전체 예제 코드

지금까지의 과정을 하나로 정리한 코드는 다음과 같습니다.

import pandas as pd

# CSV 파일 읽기
dataFrame = pd.read_csv("C:\Users\amit_\Desktop\SalesRecords.csv")
print("DataFrame...\n", dataFrame)

# DataFrame의 행과 열 개수 확인
print("\nDataFrame의 행과 열 개수 = ", dataFrame.shape)

# 등록 가격이 1000 미만인 행만 추출
resData = dataFrame[dataFrame.Reg_Price < 1000]

print("DataFrame...\n", resData)

실행 결과

위 코드를 실행하면 다음과 같은 출력을 확인할 수 있습니다.

DataFrame...
         Car   Date_of_Purchase   Reg_Price
0        BMW        10/10/2020         1000
1      Lexus        10/12/2020          750
2       Audi        10/17/2020          750
3     Jaguar        10/16/2020         1500
4    Mustang        10/19/2020         1100
5 Lamborghini        10/22/2020         1000

DataFrame의 행과 열 개수 = (6, 3)
DataFrame...
      Car   Date_of_Purchase   Reg_Price
1  Lexus        10/12/2020         750
2   Audi        10/17/2020         750

출력 결과를 보면 전체 6개 행 중 등록 가격이 1000 미만인 Lexus(750)Audi(750) 두 행만 필터링되어 반환된 것을 확인할 수 있습니다.

참고: 여러 조건 결합하기

조건이 여러 개일 때는 논리 연산자를 함께 사용하면 됩니다. 예를 들어 등록 가격이 700보다 크면서 800보다 작은 행을 찾으려면 다음과 같이 작성합니다.

dataFrame[(dataFrame.Reg_Price > 700) & (dataFrame.Reg_Price < 800)]

이처럼 Pandas의 조건부 인덱싱을 익혀두면 데이터 분석 시 원하는 데이터만 빠르게 골라내는 강력한 도구로 활용할 수 있습니다.