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

Python Pandas DataFrame에서 조건에 맞는 행(하위 집합) 선택하는 방법

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) 연산자를 함께 사용할 수도 있으니 참고하세요.