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

Python – Pandas(판다스)로 DataFrame에서 특정 값 검색하기

개요

Pandas(판다스) 라이브러리를 사용하면 DataFrame 내부에서 원하는 특정 값을 손쉽게 검색할 수 있습니다. 조건에 맞는 값의 위치(index)를 찾은 후, iloc을 활용하면 해당 값이 포함된 행 전체를 한 번에 조회할 수 있습니다.

이 글에서는 등록 가격(Reg_Price)이 5000인 자동차(Car)를 찾아 해당 행 전체를 출력하는 예제를 단계별로 살펴보겠습니다.

1단계: 필요한 라이브러리 임포트

가장 먼저 pandas 라이브러리를 불러옵니다.

import pandas as pd

2단계: DataFrame 생성

4개의 컬럼(Car, Cubic_Capacity, Reg_Price, Units_Sold)을 가진 DataFrame을 생성합니다.

dataFrame = pd.DataFrame({
   "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
   "Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
   "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000],
   "Units_Sold": [100, 120, 150, 110, 200, 250]
})

3단계: 특정 값 검색

등록 가격(Reg_Price)이 5000인 차량을 찾기 위해 반복문으로 각 행의 값을 확인하고, 조건에 일치하는 인덱스를 저장합니다.

for i in range(len(dataFrame.Car)):
   if 5000 == dataFrame.Reg_Price[i]:
      indx = i

4단계: 검색 결과 출력

찾아낸 인덱스를 iloc에 넣으면 해당 값이 속한 행 전체를 확인할 수 있습니다.

dataFrame.iloc[indx]

전체 예제 코드

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

import pandas as pd

# DataFrame 생성
dataFrame = pd.DataFrame({
   "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
   "Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
   "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000],
   "Units_Sold": [100, 120, 150, 110, 200, 250]
})

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

# 등록 가격이 5000인 Car 검색
for i in range(len(dataFrame.Car)):
   if 5000 == dataFrame.Reg_Price[i]:
      indx = i

# 검색된 값 출력
print("\n특정 값 검색 결과...\n", dataFrame.iloc[indx])

실행 결과

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

DataFrame ...
         Car   Cubic_Capacity   Reg_Price   Units_Sold
0       BMW              2000        7000          100
1     Lexus              1800        1500          120
2     Tesla              1500        5000          150
3   Mustang              2500        8000          110
4  Mercedes              2200        9000          200
5    Jaguar              3000        6000          250

Searched DataFrame for the following specific value...
Car               Tesla
Cubic_Capacity     1500
Reg_Price          5000
Units_Sold          150
Name: 2, dtype: object

마무리 및 참고 사항

이처럼 반복문과 iloc을 조합하면 DataFrame에서 특정 값이 있는 행을 쉽게 찾을 수 있습니다. 다만 위 방식은 데이터가 많을 경우 성능이 떨어질 수 있으므로, 실무에서는 아래와 같은 벡터화 방식을 사용하는 것이 더 효율적입니다.

# 불리언 인덱싱으로 특정 값 검색 (권장 방식)
result = dataFrame[dataFrame["Reg_Price"] == 5000]
print(result)

불리언 인덱싱(Boolean Indexing)은 조건에 맞는 모든 행을 한 번에 반환하므로, 대용량 데이터에서도 빠르고 간결하게 검색할 수 있다는 장점이 있습니다.