개요
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 = i4단계: 검색 결과 출력
찾아낸 인덱스를 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)은 조건에 맞는 모든 행을 한 번에 반환하므로, 대용량 데이터에서도 빠르고 간결하게 검색할 수 있다는 장점이 있습니다.