Pandas에서 특정 조건을 만족하는 행의 하위 집합(subset)만 추출하고 싶다면 불리언 인덱싱(Boolean Indexing)을 활용하면 됩니다. 조건식을 대괄호 안에 넣어주기만 하면, 해당 조건이 참(True)인 행들만 자동으로 필터링됩니다.
예제 데이터 준비
먼저 CSV 파일의 내용이 다음과 같다고 가정해 보겠습니다. 이 파일에는 차량명(Car), 등록 가격(Reg_Price), 판매 수량(Units) 정보가 담겨 있습니다.
가장 먼저 CSV 파일의 데이터를 Pandas DataFrame으로 불러옵니다.
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv")조건으로 행 선택하기
1. 특정 값보다 큰 행 선택
판매 수량(Units)이 100보다 많은 차량 레코드만 선택하고 싶다면 아래와 같이 작성합니다.
dataFrame[dataFrame["Units"] > 100]
2. 특정 값보다 작은 행 선택
반대로 등록 가격(Reg_Price)이 3000 미만인 차량 레코드만 선택하고 싶다면 다음과 같이 합니다.
dataFrame[dataFrame["Reg_Price"] < 3000]
전체 예제 코드
지금까지 설명한 내용을 하나의 코드로 정리하면 다음과 같습니다.
import pandas as pd
# CSV 파일의 데이터를 Pandas DataFrame으로 불러오기
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv")
print("\nCSV 파일 읽기...\n", dataFrame)
# 두 개의 열만 표시
res2 = dataFrame[['Reg_Price', 'Units']]
print("\n두 개의 열 표시 : \n", res2)
# Units가 100보다 많은 행 선택
print("\nUnits가 100 초과인 차량 : \n", dataFrame[dataFrame["Units"] > 100])
# Reg_Price가 3000 미만인 행 선택
print("\nReg_Price가 3000 미만인 차량 : \n", dataFrame[dataFrame["Reg_Price"] < 3000])실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Reading the CSV file...
Car Reg_Price Units
0 BMW 2500 100
1 Lexus 3500 80
2 Audi 2500 120
3 Jaguar 2000 70
4 Mustang 2500 110
Displaying two columns :
Reg_Price Units
0 2500 100
1 3500 80
2 2500 120
3 2000 70
4 2500 110
Select cars with Units more than 100:
Car Reg_Price Units
2 Audi 2500 120
4 Mustang 2500 110
Select cars with Reg_Price less than 3000:
Car Reg_Price Units
0 BMW 2500 100
2 Audi 2500 120
3 Jaguar 2000 70
4 Mustang 2500 110정리
DataFrame에서 행의 하위 집합을 선택하는 방법은 매우 간단합니다. dataFrame[조건식] 형태로 비교 연산자(>, <, ==, != 등)를 사용하면 원하는 조건에 맞는 행만 손쉽게 필터링할 수 있습니다. 여러 조건을 조합할 때는 &(AND), |(OR) 연산자를 함께 사용할 수도 있으니 참고하세요.