문제 개요
주어진 DataFrame(데이터프레임)에서 가장 어린 나이를 가진 직원의 ID와 급여를 찾는 프로그램을 파이썬으로 작성해 보겠습니다. 이 문제는 pandas의 불리언 인덱싱(Boolean Indexing)과 min() 함수를 활용하면 간단하게 해결할 수 있습니다.
입력 −
다음과 같은 DataFrame이 있다고 가정합니다.
DataFrame is Id Age Salary 0 1 27 40000 1 2 22 25000 2 3 25 40000 3 4 23 35000 4 5 24 30000 5 6 32 30000 6 7 30 50000 7 8 28 20000 8 9 29 32000 9 10 27 23000
출력 −
최소 나이(22세)에 해당하는 직원의 ID와 급여 결과는 다음과 같습니다.
Id Salary 1 2 25000
해결 방법
이 문제는 아래 단계를 따라 해결할 수 있습니다.
직원 정보가 담긴 DataFrame을 정의합니다.
Age 열의 값이 전체 최소 나이(
df['Age'].min())와 일치하는 행만 조건으로 필터링하여 result DataFrame에 저장합니다.
result = df[df['Age']==df['Age'].min()]
result DataFrame에서 필요한 Id와 Salary 열만 추출하여 출력합니다.
result[['Id','Salary']]
여기서 df['Age'] == df['Age'].min()은 Age 열의 각 값이 최소 나이와 같은지 비교한 불리언 시리즈를 반환하고, 이를 DataFrame에 대괄호로 넘기면 조건이 참인 행만 남게 됩니다. 만약 최소 나이를 가진 직원이 여러 명이라면 해당하는 모든 행이 함께 반환된다는 점도 기억해 두면 좋습니다.
예제 코드
아래 전체 구현 예제를 통해 실행 과정을 확인해 보겠습니다.
import pandas as pd
data = [[1,27,40000],[2,22,25000],[3,25,40000],[4,23,35000],[5,24,30000],
[6,32,30000],[7,30,50000],[8,28,20000],[9,29,32000],[10,27,23000]]
df = pd.DataFrame(data,columns=('Id','Age','Salary'))
print("DataFrame is\n",df)
print("find the minimum age of an employee id and salary\n")
result = df[df['Age']==df['Age'].min()]
print(result[['Id','Salary']])실행 결과
DataFrame is Id Age Salary 0 1 27 40000 1 2 22 25000 2 3 25 40000 3 4 23 35000 4 5 24 30000 5 6 32 30000 6 7 30 50000 7 8 28 20000 8 9 29 32000 9 10 27 23000 find the minimum age of an employee id and salary Id Salary 1 2 25000
실행 결과를 보면 나이가 22세로 가장 어린 2번 직원의 ID와 급여(25000)가 정상적으로 출력되는 것을 확인할 수 있습니다. 이와 같은 방식은 최대값을 찾을 때도 응용할 수 있으며, max(), idxmin(), nsmallest() 등의 함수와 함께 활용하면 다양한 데이터 분석 작업에 유용하게 사용됩니다.